我有一个非常大(约1,000,000行)的表,其中可能包含重复行(可能包含NULL值)。
我的目标是这样做:
- 只选择不同的行。
- 删除具有重复“id”字段的行。
让我们看一个表:
id | a | b
1 | 2 | 3
2 | 8 | 7
3 | 9 | 10
2 | 8 | 7
3 | 20| 12
What I want to get is:
id | a | b
1 | 2 | 3
2 | 8 | 7
id为2的行只保留一份,而id为3的行已被删除。
我的想法是:
SELECT DISTINCT id, a, b FROM table
;从中获取不同的行。- 以某种方式过滤(1)的结果,以删除重复的id。
最佳解决方案是什么?
sql remove duplicate rows
时找到了什么。你得到了和我一样的四十页结果吗? :-) 抱歉,忍不住开个玩笑:请见http://stackoverflow.com/search?q=sql+remove+duplicate+rows - paxdiablo2
之所以幸存下来是因为内容相同。3
被丢弃了,因为两个记录不同(换句话说,如果所有副本都相同,则保留一个id的副本,否则将其丢弃),这可能使我上面的讽刺评论不准确 :-) 如果情况确实如此,那么向Petr道歉。 - paxdiablo1
呢? - Neil