2016-12-04 121 views
0

您好我有兩個表一個是用戶,另一種是user_detailsGroup by不在where子句mysql中工作嗎?

用戶表是

id name 
--------- 
1  John  
2  Tom   
3  Amy 
4  Kat 

的user_details表

id user_id money  created_on 
------------------------------------ 
1  1  2000  2016-12-01 
2  1  5000  2016-12-02 
3  1  6000  2016-12-03 
4  2  2050  2016-12-01 
5  2  5020  2016-12-02 
6  3  6000  2016-12-04 

我需要得到像

name user_id money  created_on 
------------------------------------ 
John  1  6000  2016-12-03 
Tom  2  5020  2016-12-02 
Amy  3  6000  2016-12-03 
Kat  4  NULL  NULL 

我的問題是我需要記錄哪裏近期user_details表created_on,爲了這個,我寫了下面的查詢,但我得到的所有結果可以在任何一個由USER_ID告訴我有什麼錯我的查詢

SELECT * FROM `user` as `u` LEFT JOIN (SELECT user_id,money,created_on  FROM `user_details` WHERE created_on IN (SELECT MAX(created_on) FROM user_details group by user_id)) `userdata` ON `u`.`id` = `userdata`.`user_id`; 

回答

1

在你內心的子查詢,你只要組,但不要按照您當前在其他查詢中選擇的用戶的user_id進行過濾。

換句話說,你甚至都不需要按USER_ID,只是在外部子查詢,像這樣使用別名選擇給定用戶的MAX(created_on)

SELECT * FROM `user` as `u` LEFT JOIN 
    (SELECT user_id,money,created_on FROM `user_details` x WHERE created_on IN 
     (SELECT MAX(created_on) FROM user_details 
       WHERE x.user_id = user_details.user_id)) 
     `userdata` ON `u`.`id` = `userdata`.`user_id`; 
+0

你給我確切的結果非常感謝你 – ohmygood

+0

如何獲得上個月的最大日期,當我嘗試使用INTERVAL - 一個月我沒有獲取數據 – ohmygood