如何简单地删除SQL Server中的重复记录?

时间:2019-06-04 04:14:44

标签: sql sql-server

在我的表格中,我有一些重复的记录。我只想删除它们,然后在表中保留一个条目。

与表A中的[SourceGradeId]匹配的列。

有人可以给我展示一个非常简单的删除查询,而不是更改表吗?

2 个答案:

答案 0 :(得分:2)

您可以在下面的查询中运行,以基于表A的“ SourceGradeId”列删除重复的记录。 请注意,因为这将删除很多行,请在执行此操作之前备份数据

With Duplicates as
(
   select * , row_number() over(partition by SourceGradeId order by SourceGradeId ) rownumber 
   from A  
) delete from Duplicates where rownumber!=1

答案 1 :(得分:2)

使用row_number。假定存在另一列或多列有助于识别要保留的列。

;with r as (
    select SourceGradeId, 
           row_number() over (partition by SourceGradeId order by <other col>) rn
    from A
 )
 delete r where rn>1