mysql group by結合排序


今天改一個需求:

任務大廳需展示:任務列表 union 任務環節(任務下的多個環節)列表

雖是展示任務,還想展示任務下的第一個環節,和任務大廳的設計就匹配了

所以任務分組查詢,還要查詢出最小的環節

造了一個表和一些數據,做測試

mysql5.7之前,可以用子查詢

SELECT *
FROM (SELECT * FROM class ORDER BY age DESC) r
GROUP BY r.class_num
ORDER BY r.age DESC;

5.7以后對排序的sql解析做了優化,子查詢中的排序是會被忽略的,改為如下:

SELECT * FROM
( SELECT * FROM class ORDER BY age DESC LIMIT 999999 ) r 
GROUP BY r.class_num
ORDER BY r.age DESC;

備注:limit需要足夠大,大到能包括所有查詢的數據

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM