数据库
首页 > 数据库> > MYSQL删除同一组中的重复记录,只保留一个

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