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需要足够大,大到能包括所有查询的数据

 

posted @ 2020-06-23 17:26  mabiao008  阅读(2683)  评论(0编辑  收藏  举报