我需要比较行并删除重复项,而无需检查密钥

时间:2014-08-07 09:01:41

标签: sql sql-server duplicates

我有一张包含大量数据(+3百万行)和30列的表格。不幸的是,在某些情况下,我会收到重复的行,并且原来的密钥是'缩短,因此在将行添加到表中时,不能用于检查行是否已存在。如何比较每一行中每一列的每个值,如果找到匹配(即整个行与另一整行匹配,除了键),匹配将被删除?

以下查询显然不起作用,因为它需要一个唯一的密钥来检查(我认为?):

SELECT DISTINCT *
INTO duplicate_table
FROM original_table
GROUP BY key_value
HAVING COUNT(key_value) > 1

DELETE original_table
WHERE key_value IN (SELECT key_value
                    FROM duplicate_table)

INSERT original_table
   SELECT *
   FROM duplicate_table

DROP TABLE duplicate_table

或者上述情况会如上所述?

0 个答案:

没有答案