使用group by后按预期工作顺序排序

时间:2017-04-07 13:33:50

标签: mysql laravel

我试图通过对Message message = new Message("hello world", 1, 3, 3, 7); meSocket.Send((byte[])message); from_user_id进行分组来获取消息列表,使它们看起来像下面的屏幕截图。只是,我的问题是他们似乎没有按最近的顺序排序。

以下是截图,展示了它们的外观:

enter image description here

查询: 选择

to_user_id

表格结构:

enter image description here

2 个答案:

答案 0 :(得分:2)

您需要将日期值添加到查询中:

select concat(to_user_id, from_user_id) as group_by,
       max(updated_at) as max_updated_at
from personal_messages pm
where (to_user_id = 1265) or (from_user_id = 1265)
group by group_by
order by max_updated_at desc

日期值可以是created_atupdated_at,具体取决于您的实际需求。您必须使用像MAX这样的聚合函数,因为这两个字段都不会出现在GROUP BY子句中。

答案 1 :(得分:0)

查看答案MySQL "Group By" and "Order By"

问题是该群组对订单的要求是胜过order_by。没有100%的解决方案,但是这个链接会给你一些适合你的东西。