mysql 5.7.15 union order by 子查詢排序不生效

其實這麼寫理論上是對的,很多博客教程都是這樣子寫的。。
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



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章