2013-02-24 128 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