3

thisthisを読みましたが、別のテーブルを設定するには GROUP BY クエリを作成する必要があります。

logintableこのようなものです:

id | name    | login_date
------------------------
1  | michael | 2013-01-04 
2  | michael | 2013-01-08 
3  | mary    | 2013-01-11 
4  | john    | 2013-01-15 
5  | michael | 2013-01-19 
6  | mary    | 2013-01-22 
7  | john    | 2013-01-26 

次のようなクエリを作成します。

SELECT * FROM logintable GROUP BY name ORDER BY id ASC

これにより、ユーザーの最初のログイン日がわかります。

1  | michael | 2013-01-04 
3  | mary    | 2013-01-11 
4  | john    | 2013-01-15 

userstable次のような別のテーブルがあります。

id | name    | last_seen_date | first_login_date
------------------------------------------------
1  | michael | 2013-02-02     |  
2  | john    | 2013-02-04     |   
3  | mary    | 2013-02-16     |  

最初の結果で、userstable の first_login_date 列を更新する必要があります。これどうやってするの ?(logintable に 75,000 レコード、usertable に 10,000 レコードあります)

4

4 に答える 4

2

MySql はわかりませんが、SQL Server では次のように記述します。

UPDATE userstable set first_login_date = (SELECT MIN(login_date) FROM logintable where name = userstable.name)
于 2013-04-12T19:09:12.223 に答える
0

UPDATE userstable a INNER JOIN ( SELECT name, min(login_date) min_date FROM logintable GROUP BY name ) b ON a.name = b.Name SET a.first_login_table = b.min_date

これにより、間違いなく出力が表示されます。

于 2014-03-05T10:56:07.597 に答える