2017-08-07 139 views
3

我想獲取table2的最後一行,我將其與table1連接在一起。返回從左連接的mysql查詢中的最後一行

表1列:

  1. ID
  2. 創建日期

表2列:

  1. LAST_LOGIN
  2. IP_ADDRESS存入記錄在表2每次用戶

登錄數據,所以我試圖顯示從表1,其顯示從表2的last_login記錄所有用戶。

這裏是我當前的查詢:

SELECT table1.*, table2.last_login 
FROM table1 
LEFT JOIN table2 ON table2.id= table1.id 
ORDER BY table2.last_login desc; 

有了上面的查詢我能夠從兩個表,其中如果用戶A登錄5次,查詢將返回5行得到的所有數據,但我只想顯示用戶詳細信息和他們的last_login數據。如果我添加GROUP BY table1.id,它會爲每個用戶返回1行記錄,但last_login數據未顯示最新記錄。

回答

0

如果你只是想最後一次登錄的,也許是相關子查詢會做:

SELECT t1.*, 
     (SELECT MAX(t2.last_login) 
     FROM table2 t2 
     WHERE t2.id = t1.id 
     ) as last_login 
FROM table1 t1 
ORDER BY last_login desc; 

出於性能考慮,你想對table2(id, last_login)的索引。

+0

謝謝!這解決了我的問題:) –

+0

(這可能是PRIMARY KEY) – Strawberry