Sql 删除重复记录并保留原始记录

Sql 删除重复记录并保留原始记录,sql,sql-server,sql-server-2005,Sql,Sql Server,Sql Server 2005,可能重复: 我有一个没有主键的表和一个有重复项的列。我想删除表中保留一个条目的所有重复项。请帮助创建存储过程和过程内部: 您必须从给定的表结构动态地创建临时表 然后将表中所有不同的行插入临时表 最后截断表 并至少从临时表中插入行并删除临时表 如果您有问题,那么我必须为您编写sp。使用按所有字段分区的行数函数,只保留RN=1的行。由于您使用的是SQL Server 2005+,因此可以使用CTE执行以下操作: ;WITH cte AS ( SELECT ROW_NUMBER() OVER

可能重复:


我有一个没有主键的表和一个有重复项的列。我想删除表中保留一个条目的所有重复项。请帮助创建存储过程和过程内部:

  • 您必须从给定的表结构动态地创建临时表
  • 然后将表中所有不同的行插入临时表
  • 最后截断表
  • 并至少从临时表中插入行并删除临时表

  • 如果您有问题,那么我必须为您编写sp。

    使用按所有字段分区的行数函数,只保留RN=1的行。

    由于您使用的是SQL Server 2005+,因此可以使用CTE执行以下操作:

    ;WITH cte AS 
    (
      SELECT ROW_NUMBER() OVER (PARTITION BY Col1, Col2, Col3  ORDER BY (SELECT 0)) RN
      FROM  yourtable
    )
    DELETE FROM cte
    WHERE RN > 1
    

    你能提供一些更详细的信息,如表结构、列等吗