2013-02-24 129 views
13

我写了一个查询从表删除重复记录在SQL Server

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 

删除重复的记录,但我不知道我在哪里出了错跟它

无效列name duplicateRecCount

有人可以帮我吗?

回答

32

您需要引用CTE DELETE语句...

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 
4
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