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 將無效。 

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