多个结果集 union

之前物流发布计划的展示是按照失效时间降序排列的.但是后来我们需要让没有过期的发布计划升序排列,过期了的发布计划降序排列.这种要求如果要在一个查询里实现的话我暂时还没有思路,所以我使用union拼接两个查询结果集,通过当前时间与失效时间的差值来判断.但是写完之后执行一下,会报Incorrect usage of UNION and ORDER BY的错误.

字面意思,没有正确的使用union和order by.

实际原因是因为如果要使用order by的话,必须使用括号扩住子句. 但是如果仅仅只是使用括号扩住结果集的话,order by是没有效果的,应该改为select * from (结果集)

也就是说order by不能直接出现在union的子句中,但是可以出现在子句的子句中.

还有一种方式,可以使用(子句 limit ...) union (子句 limit ...)这两种方法都可以 看怎么选择吧

posted @ 2018-09-17 09:55  天糊十三幺  阅读(513)  评论(0编辑  收藏  举报