SQL?Group?By分組后如何選取每組最新的一條數(shù)據(jù)
Group By分組后選取每組最新的一條數(shù)據(jù)
問題
group by語句只會展示一條數(shù)據(jù),而且很多時候并不會展示我們想要的數(shù)據(jù),如何解決呢
首先我們先建一張表 temp,如下
我們先試一下分組查詢,看看結果
SELECT * FROM `temp` GROUP BY address
結果如下:
它默認是取的id最小的那一條數(shù)據(jù),如果想要取最新的一條呢,我們試試先排序再分組
SELECT * FROM (SELECT * FROM `temp` ORDER BY `create_time` desc) AS t GROUP BY t.`address`
看看結果:
發(fā)現(xiàn)結果沒變,就像排序好像沒生效一樣,下面有兩種解決方法
方法一:加limit關鍵字
SELECT * FROM (SELECT * FROM `temp` ORDER BY `create_time` desc limit 100) AS t GROUP BY t.`address`
現(xiàn)在結果就是我們想要的了
但是limit關鍵字,有時候可能不好限制范圍,如果你想查所有的數(shù)據(jù)呢,難道要單獨查一下有多少條數(shù)據(jù),再limit嗎,好像顯得不太專業(yè),所以下面有方法二
方法二:用max函數(shù)
SELECT t1.* FROM `temp` t1, ( SELECT MAX( id ) id FROM `temp` GROUP BY address ) AS t2 WHERE t1.id = t2.id
這種事先將每個分組最大的id取出來,再拼接數(shù)據(jù),也能達到一樣的效果,結果如下:
如果你不想取最新的,想取中間某個范圍的,還能加where條件
SELECT t1.* FROM `temp` t1, ( SELECT MAX( id ) id FROM `temp` WHERE create_time < '2022-08-16' GROUP BY address ) AS t2 WHERE t1.id = t2.id
結果如下:
好啦,問題解決了
總結
到此這篇關于SQL Group By分組后如何選取每組最新的一條數(shù)據(jù)的文章就介紹到這了,更多相關Group By分組選取最新數(shù)據(jù)內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
- mysql通過group?by分組取最大時間對應數(shù)據(jù)的兩種有效方法
- python?DataFrame數(shù)據(jù)分組統(tǒng)計groupby()函數(shù)的使用
- MySQL數(shù)據(jù)庫分組查詢group by語句詳解
- pandas數(shù)據(jù)分組groupby()和統(tǒng)計函數(shù)agg()的使用
- 基于mysql實現(xiàn)group by取各分組最新一條數(shù)據(jù)
- 利用Pandas和Numpy按時間戳將數(shù)據(jù)以Groupby方式分組
- Sql group by 分組取時間最新的一條數(shù)據(jù)(示例代碼)
相關文章
windows下MySQL5.6版本安裝及配置過程附有截圖和詳細說明
這篇文章主要介紹了windows下MySQL5.6版本安裝及配置過程附有截圖和詳細說明,需要的朋友可以參考下2013-06-06mysql 實現(xiàn)添加時間自動添加更新時間自動更新操作
這篇文章主要介紹了mysql 實現(xiàn)添加時間自動添加更新時間自動更新操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01最新版MySQL 8.0.22下載安裝超詳細教程(Windows 64位)
這篇文章主要介紹了最新版MySQL 8.0.22下載安裝超詳細教程(Windows 64位),本文通過圖文實例相結合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12