mysql 的union 子结果集排序无效,如何解决?

今天做了一个需求,要求把一个表中type=3的拿出来,按时间排序,把type=5的拿出来,按时间排序,最后,把两个结果集合并成一个,首先想到的是union.

但是问题在于,这个子结果集的排序如何操作,按照mysql union的要求,只能对最后的大结果集进行排序。网上的建议是,如下

select * from (select a.id,a.type,a.order_num,status,updated_at from return_logs a where a.type in ('2','3') and a.status=3 order by a.updated_at desc)m union all select * from(select b.id,b.type,b.order_num,b.status,b.updated_at from return_logs b where b.type in ('2','3') and b.status=5 order by b.updated_at desc)m

但是,执行后,还是没有用处。

那么如何解决这个问题?

子查询加limit,即可。

只要对上述sql语句的子查询加上limit,子查询的排序就能够成功。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容