Sql server 2008 如何从sql表中删除重复记录,但从重复记录中删除一条记录除外?

Sql server 2008 如何从sql表中删除重复记录,但从重复记录中删除一条记录除外?,sql-server-2008,Sql Server 2008,可能重复: 我有一个表,其中包含一个projectd列,该列在表中有重复的记录。以及具有主键列的表。我想保留一条记录&删除其余的重复项。 下面的查询是查找重复记录的总数以及出现的次数- SELECT ProjectID, COUNT(ProjectID) AS NumOccurrences FROM MyTable GROUP BY ProjectID HAVING ( COUNT(ProjectID) > 1 ) 如何做到这一点 谢谢。我尝试了您的查询,它可以正常工作,但在解析查询

可能重复:

我有一个表,其中包含一个projectd列,该列在表中有重复的记录。以及具有主键列的表。我想保留一条记录&删除其余的重复项。 下面的查询是查找重复记录的总数以及出现的次数-

SELECT ProjectID, 
COUNT(ProjectID) AS NumOccurrences
FROM MyTable
GROUP BY ProjectID
HAVING ( COUNT(ProjectID) > 1 )
如何做到这一点


谢谢。

我尝试了您的查询,它可以正常工作,但在解析查询时出现以下错误-
解析SQL窗格内容时遇到以下错误:不支持OVER-SQL构造或语句
@Priyanka–我不明白。它运行正常,但解析时出错?如何解析?“用什么?”普里扬卡——现在我明白了。这是“SQL窗格”。我认为Microsoft Management Studio中的可视化设计器无法处理行数,甚至可能无法处理通用表表达式。@Mikael Eriksson:我正在通过VS2010的服务器资源管理器解析查询。但是我已经在MicrosoftSQLServerManagementStudio上进行了测试&它工作得很好。但是,如果我在vs2010中开发的应用程序中使用此查询,那么我是否必须面对相同的问题?@Priyanka–我从未使用过vs2010。查询没有问题。这应该是安全的使用。我认为您在VS2010中遇到了一些图形设计器/查询部分的问题。如果你用谷歌搜索错误消息,你会发现其他人也有类似的问题。
;with cte as
(
  select row_number() over(partition by ProjectID order by ProjectID) as rn
  from MyTable
)
delete cte
where rn > 1