mysql 多个排序失效_解决MySQL子查询排序失效的问题

问题描述:高版本的MySQL(5.6以上)在子查询中使用order by 语句后查询结果并不会显示排序后的结果。

以下是我使用的两个解决方法,供参考:

1.当子查询的order by语句后面没有limit关键字时,数据库会自动优化,即忽略order by语句。因此只需要添加limit关键字即可。

2.在子查询中使用聚合函数。

具体示例如下所示: 现在我有一张表message,存放用户的对话信息,表中内容如下所示(图中我的一些测试数据请忽略:))。

mysql 多个排序失效_解决MySQL子查询排序失效的问题_第1张图片

现在我想查询按照conversation_id分组后,每组的created_date值最大的数据项所组成的所有数据结果。查询结果的实际意义就是每组对话中最新的一条对话信息。预期查询结果应该显示id为2和10所在的两条数据。

先直接在子查询中使用order by语句,查询语句为:

select * from (select * from message order by created_date desc) b group by conversation_id;

查询结果为:

dd87dd53a2417d98de333d248c87b103.png

可以发现查询的结果与预期刚好相反&#

你可能感兴趣的:(mysql,多个排序失效)