SQLServer表中删除重复数据的方法

如果表中有多组完全不同的PK值,需要一段一段地删除它们,在这种情况下,可以使用以下方法:

1。首先,通过上面的查询运行组,以确定每组重复的PK值和重复次数。

2。在临时表中选择重复键值:

SELECT col1,col2,col3 =数(*)

在和记

从T1

组COL1,COL2

计数(*)> 1

三.在临时表中选择重复行,以清除进程中的重复:

选择不同的t1 *

为holddups

从T1,和记

在t1.col1 = holdkey.col1

和t1.col2 = holdkey.col2

4。此时,该holddups表应该有一个独特的PK;然而,如果T1有一个重复的PK和独特(如上面的例子,SSN)并非如此。请验证是否在holddups钥匙是独一无二的,如果没有键重复的和独特的。如果是这样的话,你有停在那儿,决定你要保持对于一个给定的重复键值的行。例如,下面的查询:

SELECT col1,col2,计数(*)

从holddups

组COL1,COL2

我们应该返回1号。for each row. 如果结果是1,请按照下面的步骤5…如果不是1,这是一个独特的复制钥匙的情况下,你需要决定你想救哪行。总的来说,这将需要放弃一行或创造新的独特的核心价值本线。其中一个步骤是进行这种重复的PK在holddups表。

5。删除原始表中的重复行:

删除T1

从T1,和记

在t1.col1 = holdkey.col1

和t1.col2 = holdkey.col2

6。将唯一的一行返回到原始表中:

插入T1选择*从holddups