2010-07-17 53 views
6

我需要從mysql中的表中刪除重複的記錄。 所以我有一個表名「員工」字段EMPID,empname,empssn如何從mysql中的表中刪除重複的行

爲獲得重複的記錄我寫了一個查詢

 SELECT COUNT(empssn), empssn 
     FROM employee 
GROUP BY empssn 
    HAVING COUNT(empssn)>1 

現在我想刪除重複記錄。因爲我寫的查詢是。

DELETE FROM employee 
      WHERE (empid, empssn) NOT IN (SELECT MIN(empid), empssn 
                  FROM employee 
                GROUP BY empssn); 

你可以假設在表中的記錄是

EmpId EmpName EmpSSN 
------------------------------- 
1 Jack  555-55-5555 
2 Joe  555-56-5555 
3 Fred  555-57-5555 
4 Mike  555-58-5555 
5 Cathy  555-59-5555 
6 Lisa  555-70-5555 
7 Jack  555-55-5555 
8 Mike  555-58-5555 
9 Cathy  555-59-5555 
10 Lisa  555-70-5555 
11 Lisa  555-70-5555 

,但我有一個MySQL錯誤是

您不能指定目標表「員工」的更新在FROM子句

回答

9

將這個包裝到派生表中的技巧是否適用於這種情況? (上http://www.xaprb.com/blog/2006/06/23/how-to-select-from-an-update-target-in-mysql/基於)

DELETE FROM employee WHERE (empid, empssn) NOT IN 
(
SELECT empid, empssn FROM 
(
SELECT MIN(empid) AS empid, empssn FROM employee GROUP BY empssn 
) X 
); 

編輯是的它似乎工作到此結束。

+0

thanx它幫助我在我的情況:) – 2010-11-13 16:35:05