我搜索了,但是所有的问题都是删除重复记录,只在表中保留一个最新的记录,但我的是有点不同,我想删除同一组中的重复记录,但只保留该组的最新记录。下面是一个示例:
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发布于 2013-12-12 18:41:09
尝试:
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
发布于 2013-12-12 18:31:22
试试这个:
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
);检查
输出
| 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 |发布于 2013-12-13 02:08:21
NVM我发现这个问题只是将Count *>1切换为0,它不会删除非重复项
https://stackoverflow.com/questions/20540457
复制相似问题