我有一个(大〜1个000 000行)表可能含有重复行(可能的空值)。删除重复行#2
我想要做的是这样的:
- 只选择distinc行。
- 删除重复'id'字段的行。
让我们有一个表:
id | a | b
1 | 2 | 3
2 | 8 | 7
3 | 9 | 10
2 | 8 | 7
3 | 20| 12
我想要得到的是:
ID为2id | a | b
1 | 2 | 3
2 | 8 | 7
行中的一个副本被保存,而id为3行被删除。
我在想:
SELECT DISTINCT id, a, b FROM table
;只获取不同的行。- 以某种方式筛选(1)的结果以删除重复的ID。
什么是接近这一目标的最佳方式是什么?
我很好奇,你发现了什么,当你进入`sql中删除重复rows`到SO搜索框。你有没有得到我所做的四十页结果? :-)很抱歉,无法抗拒的刺拳:看http://stackoverflow.com/search?q=sql+remove+duplicate+rows – paxdiablo 2011-01-27 12:43:07
行2重复两次,它的下面列出,但第1行不重复两次它也在下面列出。这有点令人困惑,我假设你的意思是只有第1行,或者第1行和第3行? – Neil 2011-01-27 12:43:13
@尼尔,我认为`2`因为内容完全相同而幸存下来。因为这两个记录不同(换句话说,如果所有副本都是相同的,保留一个ID副本,否则抛出),这可能会使我的smarmy评论不准确,因为这似乎是一个相当特殊的案件:-)如果事实真相如此,向道歉。 – paxdiablo 2011-01-27 12:44:49