mysql leftjoin ,一对多,如何关联到右表最新的记录

2020-09-19 00:27:22 +08:00
 wq67200976
假设有数据表 user, user_login,
user 表,
id | uid
1 | 1001
2 |002

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 语句查出来
1547 次点击
所在节点    问与答
2 条回复
yeqizhang
2020-09-19 01:00:47 +08:00
右表建议再包装一层查 maxID 记录的 content 。

不知道我印象中有问题还是新的特性啥的,我之前用 group by,结果中只能是 group by 后的字段加聚合函数之类的
nuistzhou
2020-09-19 01:30:54 +08:00
可以先用 group by 处理 login 表拿到每个 uid 的最新 id 的 record,然后插回 user 表吧,应该就没有多对一插入这种随机问题性了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/708444

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX