如何从sql表中删除除重复记录之外的重复记录?

问题描述:

可能重复:
How to remove duplicate records in a table?如何从sql表中删除除重复记录之外的重复记录?

我在其中包含与专案编号具有复制表中的记录列的一个一个表。和有主键列的表。我想保留一条记录&删除其余重复。 以下查询是查找具有no的重复记录总数。的出现 -

SELECT ProjectID, 
COUNT(ProjectID) AS NumOccurrences 
FROM MyTable 
GROUP BY ProjectID 
HAVING (COUNT(ProjectID) > 1) 

如何做到这一点?

谢谢。

;with cte as 
(
    select row_number() over(partition by ProjectID order by ProjectID) as rn 
    from MyTable 
) 
delete cte 
where rn > 1 
+0

我想你的查询,它工作得很好,因为我想要什么,但它提供了解析查询时,下面的错误 - '在解析SQL窗格中的内容时遇到下列错误: 过SQL构造或语句不支持' – Priyanka

+0

@Priyanka - 我不明白。它运行良好,但解析时出现错误?你如何解析?什么? –

+0

@Priyanka - 现在我明白了。这是“SQL窗格”。我不认为Microsoft Management Studio中的可视化设计师可以处理row_number,或者甚至不能处理Common Table Expression。 –