union all子查询排序
正确sql:
(select * from menu ORDER BY `name` limit 5)
union all (select * from menu ORDER BY `name` desc limit 5)
起始SQL:
子查询分别排序,结果报错,明显是union all和order的使用有错
select * from menu ORDER BY `name`
union all (select * from menu ORDER BY `name` desc )
[Err] 1221 - Incorrect usage of UNION and ORDER BY
查看资料显示,order by如果写在最后面是对整个结果的排序:
子查询1
union all
字查询2 order by......
不是对子查询2的排序,想到加上括号:
(select * from menu ORDER BY `name` )
union all (select * from menu ORDER BY `name` desc )
没有报错有数据,但是发现数据的顺序不是我们想要的,根本就没有排序,继续查找发现需要加limit关键字。
(select * from menu ORDER BY `menu` limit 5)
union all (select * from menu ORDER BY `menu` desc limit 5)