Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 r2 删除SQL Server中的重复记录_Sql Server 2008 R2_Duplicates - Fatal编程技术网

Sql server 2008 r2 删除SQL Server中的重复记录

Sql server 2008 r2 删除SQL Server中的重复记录,sql-server-2008-r2,duplicates,Sql Server 2008 R2,Duplicates,我编写了一个查询来从表中删除重复记录 ;WITH a as ( SELECT Firstname,ROW_NUMBER() OVER(PARTITION by Firstname, empID ORDER BY Firstname) AS duplicateRecCount FROM dbo.tblEmployee ) --Now Delete Duplicate Records DELETE FROM tblEmployee WHERE duplicateRecCount > 1

我编写了一个查询来从表中删除重复记录

;WITH a as
(
SELECT Firstname,ROW_NUMBER() OVER(PARTITION by Firstname, empID ORDER BY Firstname) 
AS duplicateRecCount
FROM dbo.tblEmployee
)
--Now Delete Duplicate Records
DELETE FROM tblEmployee
WHERE duplicateRecCount > 1 
但我不知道我哪里出了问题

无效列名
duplicateRecCount


有人能帮我吗?

您需要在delete语句中引用CTE

WITH a as
(
SELECT Firstname,ROW_NUMBER() OVER(PARTITION by Firstname, empID ORDER BY Firstname) 
AS duplicateRecCount
FROM dbo.tblEmployee
)
--Now Delete Duplicate Records
DELETE FROM a
WHERE duplicateRecCount > 1
 DELETE duplicates FROM
(SELECT ROW_NUMBER() OVER (PARTITION BY firstname, lastname, EMPNO, salary,dept  ORDER BY empno) cnt
 FROM tblEmp)  duplicates
WHERE duplicates.Cnt > 1