2017-08-07 93 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