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