我搜索但所有问题都出现了删除重复记录并且只保留了一个最新的表格,但我有点不同,我想删除同一组中的重复记录但只保留该组的最新记录。这是一个例子:
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
答案 0 :(得分:4)
尝试:
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
答案 1 :(得分:3)
试试这个:
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 |
答案 2 :(得分:0)
NVM我发现问题只是切换计数*&gt; 1到0,它不会删除非重复的