數據庫有相同數據時,如何去重后取最新的一條數據


1,先講一下需求,數據庫中有相同的數據,只取最新插入的一條數據

目前只有這一種方法,還請大神多多指點其他的方法。。。。

#可行的方法
SELECT
des NAME, VALUE,date FROM t_dws_base_statistics WHERE NAME = "RKPT-JNQ-ZDGZRYFB" AND date IN ( SELECT max(date) FROM t_dws_base_statistics GROUP BY `des` );

 

 

 

 

2,這點就比較坑,

分組后,確實取的第一條,但是!!!!排序之后再分組就不取第一條!!!!

#不可行的方法
SELECT
* FROM ( SELECT * FROM `t_dws_base_statistics` WHERE NAME = 'RKPT-JNQ-ZDGZRYFB' ORDER BY date ) A GROUP BY A.des

 

 

 

  還在網上看到了一種拼接的方法,但是不太符合我的需求,一並整理

 

1.查詢出分組的所有按時間降序的記錄id並拼接

--查詢出分組的所有按時間降序的記錄id並拼接
select group_concat(id order by `time` desc) from user_position group by userId

 

2.查詢每個分組中時間最新的那條記錄的id

--查詢每個分組中時間最新的那條記錄的id
select SUBSTRING_INDEX(group_concat(id order by `time` desc),',',1) from user_position group by userId

 

下面有怎么用拼接函數的一篇博客,不會用group_concat的可以瀏覽一下:

https://baijiahao.baidu.com/s?id=1595349117525189591&wfr=spider&for=pc

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM