数据库有相同数据时,如何去重后取最新的一条数据


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