group by 和 order by 一起使用问题处理

group by 和 order by 一起使用时,会先使用group by 分组,并取出分组后的第一条数据,所以后面的order by 排序时根据取出来的第一条数据来排序的,但是第一条数据不一定是分组里面的最大数据。

解决方案:

可以先排序,再分组,再排序:使用子查询。

SELECT
  r.id,
  r.uid,
  r.age ,
  r.datatime
FROM (SELECT
    id,
    uid,
    age ,
    datatime
  FROM student
  ORDER BY age DESC) r
GROUP BY r.uid
ORDER BY r.age DESC;

注意:group by 比order by先执行,order by不会对group by 内部进行排序,如果group by后只有一条记录,那么order by 将无效。 

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