基于mysql實(shí)現(xiàn)group by取各分組最新一條數(shù)據(jù)
前言:
group by函數(shù)后取到的是分組中的第一條數(shù)據(jù),但是我們有時(shí)候需要取出各分組的最新一條,該怎么實(shí)現(xiàn)呢?
本文提供兩種實(shí)現(xiàn)方式。
一、準(zhǔn)備數(shù)據(jù)
http://note.youdao.com/noteshare?id=dba748092a619be0a8f160ccf6e25a5f&sub=FD4C1C7823CA440DB360FEA3B4A905CD
二、三種實(shí)現(xiàn)方式
1)先order by之后再分組:
SELECT * FROM (SELECT * from tb_dept ORDER BY id descLIMIT 10000) a GROUP BY parent_id;
不加LIMIT可能會(huì)無(wú)效,由于mysql的版本問(wèn)題。但是總覺(jué)得這種寫(xiě)法不太正經(jīng),因?yàn)槿绻麛?shù)據(jù)量大于Limit 的值后,結(jié)果就不準(zhǔn)確了。所以就有了第二種寫(xiě)法。
2)利用max() 函數(shù):
SELECT * FROM tb_dept td,(SELECT max(id) id FROM tb_dept GROUP BY parent_id) md where td.id = md.id;
3)利用 where 字段名稱(chēng) in (...) 函數(shù):
SELECT * FROM tb_dept WHERE id IN (SELECT MAX(id) FROM tb_dept GROUP BY parent_id);
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. 用腳本和查詢(xún)主動(dòng)監(jiān)視Oracle 9i性能2. MySQL 8.0新特性 — 管理端口的使用簡(jiǎn)介3. MySQL慢查詢(xún)以及解決方案詳解4. Oracle 數(shù)據(jù)庫(kù)集中復(fù)制方法逐步精細(xì)5. Oracle取整函數(shù)用法案例6. SQL Server數(shù)據(jù)庫(kù)開(kāi)發(fā)之觸發(fā)器的實(shí)際應(yīng)用7. Oracle 10g DBMS_SCHEDULER的中度解析8. Oracle和MySQL的一些簡(jiǎn)單命令對(duì)比9. oracle觸發(fā)器介紹10. Oracle數(shù)據(jù)庫(kù)9i DataGuard的安裝與維護(hù)
