MYSQL删除同一组中的重复记录,只保留一个
作者:互联网
参见英文答案 > How do I delete records in MySQL and keep the lastest date 3个
> How do I delete all the duplicate records in a MySQL table without temp tables 8个
> How do I remove duplicates rows in my MySQL database? (Keep the one with lowest Primary ID) 4个
我搜索但是所有问题都出现了删除重复记录并且只保留了一个最新的表,但我有点不同,我想删除同一组中的重复记录但只保留该组的最新记录.这是一个例子:
ID Device_ID Time Content Text
1 abc 2013-11-30 15-30-01 I love you
2 abc 2013-11-30 15-30-01 I love you
3 def 2013-10-30 12-12-02 I love you
4 def 2013-10-30 12-12-02 I love you
5 ghj 2013-09-30 11-12-02 I love you
6 ghj 2013-09-30 11-12-02 I love you
因此,有些设备与其他设备具有相同的内容,我想找到一种方法来删除每个设备ID中的重复内容并删除重复并保留最新.
如果我按内容文本选择分组,然后从那里删除它,那么它将从其他设备删除所有其他内容,我不能这样做.
假设我有5000万条记录.那么有没有办法可以删除每个设备ID上的重复记录,结果就像只有我喜欢你在每个设备ID上的内容文字.
在惰性期间,我无法将列内容文本设置为唯一,因为可能有一些设备ID使用相同的内容文本.或者也许是唯一的时间,但每个设备ID可能会插入相同的时间但不同的内容文本…
我想res
ID Device_ID TimeContent Text
2 abc 2013-11-30 15-30-01 I love you
4 def 2013-10-30 12-12-02 I love you
6 ghj 2013-09-30 11-12-02 I love you
解决方法:
尝试:
DELETE FROM tblA
WHERE id NOT IN (
SELECT DISTINCT id FROM (
SELECT MAX(id) as id FROM tblA
GROUP BY Device_ID, Time, ContentText
HAVING COUNT(*) > 1 ) A
);
见Demo
标签:duplicate-removal,sql,mysql,group-by,sql-delete 来源: https://codeday.me/bug/20190728/1564498.html