亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

SQL?Group?By分組后如何選取每組最新的一條數(shù)據(jù)

 更新時(shí)間:2022年10月25日 11:00:36   作者:小白鴨  
經(jīng)常在分組查詢之后,需要的是分組的某行數(shù)據(jù),例如更新時(shí)間最新的一條數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于SQL?Group?By分組后如何選取每組最新的一條數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下

Group By分組后選取每組最新的一條數(shù)據(jù)

問題

group by語句只會展示一條數(shù)據(jù),而且很多時(shí)候并不會展示我們想要的數(shù)據(jù),如何解決呢

首先我們先建一張表 temp,如下

我們先試一下分組查詢,看看結(jié)果

SELECT * FROM `temp`  GROUP BY address

結(jié)果如下:

它默認(rèn)是取的id最小的那一條數(shù)據(jù),如果想要取最新的一條呢,我們試試先排序再分組

SELECT
	* 
FROM
	(SELECT * FROM `temp` ORDER BY `create_time` desc) AS t 
GROUP BY
	t.`address`

看看結(jié)果:

發(fā)現(xiàn)結(jié)果沒變,就像排序好像沒生效一樣,下面有兩種解決方法

方法一:加limit關(guān)鍵字

SELECT
	* 
FROM
	(SELECT * FROM `temp` ORDER BY `create_time` desc limit 100) AS t 
GROUP BY
	t.`address`

現(xiàn)在結(jié)果就是我們想要的了

但是limit關(guān)鍵字,有時(shí)候可能不好限制范圍,如果你想查所有的數(shù)據(jù)呢,難道要單獨(dú)查一下有多少條數(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

這種事先將每個(gè)分組最大的id取出來,再拼接數(shù)據(jù),也能達(dá)到一樣的效果,結(jié)果如下:

如果你不想取最新的,想取中間某個(gè)范圍的,還能加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

結(jié)果如下:

好啦,問題解決了

總結(jié)

到此這篇關(guān)于SQL Group By分組后如何選取每組最新的一條數(shù)據(jù)的文章就介紹到這了,更多相關(guān)Group By分組選取最新數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論