mysql leftjoin ,一对多,如何关联到右表最新的记录
假设有数据表user, user_login,
user表,
id | uid |
---|---|
1 | 1001 |
2 | 1002 |
user_login表
id | uid | content |
---|---|---|
1 | 1001 | 数据1 |
2 | 1002 | 数据2 |
3 | 1001 | 数据3 |
4 | 1001 | 数据4 |
5 | 1002 | 数据5 |
现在将user表当主表,左连接查询login表,
select * from user as t1 left join (select max(id),content group by uid)
这样查到的结果uid 和content 对不上,也就是会随机选择一个值,
像这种情况想要根据主表的uid,不同的uid匹配关联表中uid相等的最新一条记录该如何做。
这个表字段等都是随手写的,不用考虑太多,只是能不能通过只通过sql语句查出来
回答
这种情况,join 两次就好了:
selectfrom user as t1
left join
(
select max
(
id
) as max_id,
uid
from user_login group by uid
) as t2 on t1.uid=t2.uid
left join
(
select id,
content
from user_login
) as t3 on t2.max_id=t3.id
结果
参见线上的演示:
https://bixuebihui.com/sql/gr...
以上是 mysql leftjoin ,一对多,如何关联到右表最新的记录 的全部内容, 来源链接: utcz.com/a/44146.html