mysql實現group by後取各分組的最新一條

前言:

group by函數後取到的是分組中的第一條數據,但是我們有時候需要取出各分組的最新一條,該怎麼實現呢?

本文提供兩種實現方式。

一、準備數據

http://note.youdao.com/noteshare?id=dba748092a619be0a8f160ccf6e25a5f&sub=FD4C1C7823CA440DB360FEA3B4A905CD

二、 具體sql

1)先order by之後再分組:

SELECT * FROM (SELECT * from tb_dept ORDER BY id desc LIMIT 10000) a GROUP BY parent_id;

不加LIMIT 可能會無效,由於mysql的版本問題。但是總覺得這種寫法不太正經,因爲如果數據量大於 Limit 的值後,結果就不準確了。所以就有了第二種寫法。

2)利用max() 函數:

SELECT * FROM tb_dept td JOIN (SELECT max(id) id FROM tb_dept GROUP BY parent_id) md  where td.id = md.id;

如果大家有好的方法,歡迎留言告知。 

 

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