mysql分組后如何每個(gè)取最新的一條記錄
mysql分組后每個(gè)取最新的一條記錄
在MySQL中,若要從一個(gè)分組中獲取每組的最新一條記錄(通常基于時(shí)間戳或其他遞增的列),可以使用子查詢或者窗口函數(shù)(如果MySQL版本支持)。
以下是兩種不同的實(shí)現(xiàn)方法:
方法1
使用子查詢和LIMIT子句
SELECT t1.* FROM your_table t1 INNER JOIN ( SELECT id, MAX(timestamp) AS max_timestamp FROM your_table GROUP BY id ) t2 ON t1.id = t2.id AND t1.timestamp = t2.max_timestamp;
在這個(gè)查詢中:
your_table
是你要查詢的表名。id
是用于分組的字段。timestamp
是用于確定哪條記錄是“最新”的時(shí)間戳字段。
方法2
使用窗口函數(shù)ROW_NUMBER()(如果MySQL 8.0+)
SELECT id, other_columns, timestamp FROM ( SELECT id, other_columns, timestamp, ROW_NUMBER() OVER(PARTITION BY id ORDER BY timestamp DESC) as rn FROM your_table ) t WHERE rn = 1;
在這個(gè)查詢中:
other_columns
代表你需要選擇的其他列。ROW_NUMBER()
函數(shù)會(huì)為每個(gè)分組內(nèi)的行分配一個(gè)唯一的數(shù)字,按timestamp降序排列,最新的記錄會(huì)得到rn = 1。PARTITION BY id
指定了分組依據(jù)。ORDER BY timestamp DESC
確保了在每個(gè)分組內(nèi)部按照時(shí)間戳降序排序。
這兩種方法都可以確保每個(gè)分組中只選擇最新的一條記錄。
- 在方法1中,先通過子查詢找到每個(gè)分組中的最新日期,然后通過連接操作獲取對(duì)應(yīng)的記錄。
- 在方法2中,使用窗口函數(shù)ROW_NUMBER()對(duì)每個(gè)分組內(nèi)的記錄進(jìn)行排序,并給每條記錄分配一個(gè)行號(hào),然后篩選出行號(hào)為1的記錄。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
MYSQL數(shù)據(jù)庫GTID實(shí)現(xiàn)主從復(fù)制實(shí)現(xiàn)(超級(jí)方便)
這篇文章主要介紹了MYSQL數(shù)據(jù)庫GTID實(shí)現(xiàn)主從復(fù)制實(shí)現(xiàn)(超級(jí)方便),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11MySQL之FIELD()與ORDER BY()相結(jié)合實(shí)現(xiàn)對(duì)結(jié)果的自定義排序方式
這篇文章主要介紹了MySQL之FIELD()與ORDER BY()相結(jié)合實(shí)現(xiàn)對(duì)結(jié)果的自定義排序方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-04-04MySQL表數(shù)據(jù)文件損壞導(dǎo)致數(shù)據(jù)庫無法啟動(dòng)的原因與解決方案
在日常的數(shù)據(jù)庫管理中,遇到MySQL表數(shù)據(jù)文件損壞的情況并不罕見,這種情況下,MySQL數(shù)據(jù)庫可能會(huì)無法正常啟動(dòng),給業(yè)務(wù)運(yùn)行帶來嚴(yán)重影響,本文將探討如何診斷和解決MySQL表數(shù)據(jù)文件損壞導(dǎo)致的數(shù)據(jù)庫無法啟動(dòng)問題,需要的朋友可以參考下2025-03-03一文徹底搞懂MySQL?TimeStamp時(shí)區(qū)問題
MySQL的timestamp類型默認(rèn)使用的是服務(wù)器的時(shí)區(qū)來存儲(chǔ)時(shí)間值,這意味著如果服務(wù)器的時(shí)區(qū)發(fā)生了變化,那么存儲(chǔ)的timestamp值也會(huì)發(fā)生變化,下面這篇文章主要給大家介紹了關(guān)于如何通過一文徹底搞懂MySQL?TimeStamp時(shí)區(qū)問題的相關(guān)資料,需要的朋友可以參考下2024-01-01