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,子查询的排序就能够成功。

你可能感兴趣的:(mysql 的union 子结果集排序无效,如何解决?)