首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MYSQL删除同组重复记录,只保留一条

问MYSQL删除同组重复记录,只保留一条
EN

Stack Overflow用户
提问于 2013-12-12 18:07:01
回答 3查看 3.8K关注 0票数 3

我搜索了,但是所有的问题都是删除重复记录,只在表中保留一个最新的记录,但我的是有点不同,我想删除同一组中的重复记录,但只保留该组的最新记录。下面是一个示例:

代码语言:javascript
复制
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

代码语言:javascript
复制
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
EN

回答 3

Stack Overflow用户

发布于 2013-12-12 18:41:09

尝试:

代码语言:javascript
复制
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

票数 4
EN

Stack Overflow用户

发布于 2013-12-12 18:31:22

试试这个:

代码语言:javascript
复制
DELETE FROM TableA  
WHERE id NOT IN (SELECT id 
                 FROM(SELECT MAX(id) id FROM TableA t
                      GROUP BY t.Device_ID, t.Time, t.ContentText HAVING COUNT(*) > 1
                     ) AS A       
                );

检查

输出

代码语言:javascript
复制
| ID | DEVICE_ID |                TIME | CONTENTTEXT |
|----|-----------|---------------------|-------------|
|  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 |
| 13 |      ghj1 | 2013-09-30 11-12-02 |  I love you |
票数 3
EN

Stack Overflow用户

发布于 2013-12-13 02:08:21

NVM我发现这个问题只是将Count *>1切换为0,它不会删除非重复项

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20540457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档