mysql 5.7.15 union order by 子查询排序不生效
2017-06-21 16:56
756 查看
其实这么写理论上是对的,很多博客教程都是这样子写的。。
select * from (SELECT * FROM article WHERE is_top=0 ORDER BY id DESC) as t1
union
select * from (SELECT * FROM article WHERE is_top=1 ORDER BY start_time desc) as t2
然后还是发现子查询的排序无效,尴尬,后来才发现如果order by 不带limit,会被优化器干掉,导致语句就是:
select * from (SELECT * FROM article WHERE is_top=0 ) as t1
union
select * from (SELECT * FROM article WHERE is_top=1) as t2
解决方案:
select * from (SELECT * FROM article WHERE is_top=0 ORDER BY id DESC limit 999999) as t1
union
select * from (SELECT * FROM article WHERE is_top=1 ORDER BY start_time desc limit 999999) as t2
select * from (SELECT * FROM article WHERE is_top=0 ORDER BY id DESC) as t1
union
select * from (SELECT * FROM article WHERE is_top=1 ORDER BY start_time desc) as t2
然后还是发现子查询的排序无效,尴尬,后来才发现如果order by 不带limit,会被优化器干掉,导致语句就是:
select * from (SELECT * FROM article WHERE is_top=0 ) as t1
union
select * from (SELECT * FROM article WHERE is_top=1) as t2
解决方案:
select * from (SELECT * FROM article WHERE is_top=0 ORDER BY id DESC limit 999999) as t1
union
select * from (SELECT * FROM article WHERE is_top=1 ORDER BY start_time desc limit 999999) as t2
相关文章推荐
- mysql 5.7.15 union order by 子查询排序不生效
- mysql 5.7.15 union order by 子查询排序不生效
- mysql union order by 分别排序问题
- 查询结果按照 'in' 里面的数据排序:order by decode
- SQL order by ID desc/asc加一个排序的字段解决查询慢问题
- MYSQL order by排序与索引关系总结
- [SQL基础教程] 3-4 对查询结果进行排序/ORDER BY
- oracle-union order by rownum排序与取数
- MYSQL随机抽取查询 MySQL Order By Rand()效率问题
- 【层次查询】Hierarchical Queries之亲兄弟间的排序(ORDER SIBLINGS BY)
- mysql 使用order by field() 自定义排序
- MySql Order By 多个字段 排序规则
- Oracle递归层次查询-亲兄弟间的排序ORDER SIBLINGS BY
- MYSQL order by排序与索引关系总结
- mysql order by 排序 varchar 类型数据
- 解决 联表查询 group by 之后 order by desc 不支持排序问题
- MySQL如何利用索引优化ORDER BY排序语句
- MYSQL之union和order by分析([Err] 1221 - Incorrect usage of UNION and ORDER BY)