1. 程式人生 > 資料庫 >基於mysql實現group by取各分組最新一條資料

基於mysql實現group by取各分組最新一條資料

前言:

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

本文提供兩種實現方式。

一、準備資料

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

基於mysql實現group by取各分組最新一條資料

二、三種實現方式

1)先order by之後再分組:

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

基於mysql實現group by取各分組最新一條資料

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

2)利用max() 函式:

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

基於mysql實現group by取各分組最新一條資料

3)利用 where 欄位名稱 in (...) 函式:

SELECT * FROM tb_dept WHERE id IN (SELECT MAX(id) FROM tb_dept GROUP BY parent_id);

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。