从左连接中返回mysql查询的最后一行

3
我正在尝试获取与table1左联接的table2的最后一行。
Table1列:
1. id 2. 名称 3. 创建日期
Table2列:
1. id 2. 最后登录时间 3. IP地址
每次用户登录时,登录数据都存储在table2中。因此,我正在尝试从table1中显示所有用户,这将显示table2中的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数据不显示最新记录。
2个回答

0

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)上建立索引。

(这很可能是主键) - Strawberry

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接