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