mysql 获取 order by 发生在 group by 之前
我有三个表,我将在这里向您展示相关列
表:组列:group_id、名称。
表:groups_to_message 列: group_id、message_id
表:消息列:message_id, 创建(日期)
我基本上需要找到每个组的最后一条消息,而不显示重复的组。
我尝试过像这样使用 group by :
SELECT m.created, g.group_id
FROM groupss as g
JOIN group_to_message as gm ON (g.group_id = gm.group_id)
JOIN messages as m
GROUP BY g.group_id
ORDER BY m.created DESC
这会导致成功分组,但在 ORDER BY 之前完成,因此第一个结果在排序之前获取。
任何帮助表示赞赏。
I have three tables and I will just show you the relevant columns here
Table: groups Columns: group_id, name.
Table: groups_to_message Columns:
group_id, message_idTable: messages Columns: message_id,
created (date)
I need to basically find the last message for each group, with out showing duplicate groups.
I've tried using group by like this:
SELECT m.created, g.group_id
FROM groupss as g
JOIN group_to_message as gm ON (g.group_id = gm.group_id)
JOIN messages as m
GROUP BY g.group_id
ORDER BY m.created DESC
This causes the successful grouping but is done before the ORDER BY so the first result is taken before the sort.
Any help appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果我没看错你的问题,请使用 MAX()。这应该为您提供每个组的最新项目
示例...
If I'm reading your question right, Use MAX(). This should get you the most recent item for each group
Example...
这未经测试,但应该有效:
This is untested, but it should work: