今天在产看查询结果的时候,发现一个问题,展现未按照既定的顺序排列,看sql日志未报错,详细看了下sql介绍才发现问题
如果是需要对于union后的结果进行order by 那么sql语句的写法应该是
(select * from A where name="" )
union
( select * from A where id="")
order by age
但是如果是想要对于单独的sql结果进行排序
sql语句写法如下
(SELECT a FROM tbl_name WHERE a=10 AND B=1 ORDER BY a LIMIT 10)
UNION
(SELECT a FROM tbl_name WHERE a=11 AND B=2 ORDER BY a LIMIT 10);
另外注意:圆括号中用于单个SQL语句的ORDER BY只有当与LIMIT结合后,才起作用。否则,ORDER BY被优化去除。
因为order by 和union联合使用时,只有最后的order by 起作用。