如何删除SQL Server表中的重复行

时间:2018-12-27 14:58:06

标签: sql sql-server

我有一个包含约100列的SQL Server表,其中包括列IdCreationDate。由于其初始设计中的严格限制,现在有许多重复的行(即,所有列中的值都相同的行)。

您能建议一个脚本来删除那些重复的行吗?

此外,用最新的CreationDate选择所有不同ID的脚本是什么?

谢谢

1 个答案:

答案 0 :(得分:0)

您可以使用以下脚本从Microsoft SQL Server表中删除重复的行:

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

执行此脚本时,将遵循以下步骤:

  1. 它将原始表中任何重复行的一个实例移至重复表。

  2. 它从原始表中删除所有驻留在重复表中的行。

  3. 它将重复表中的行移回到原始表中。

  4. 它将删除重复表。