2010-07-17 2 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 является

Вы не можете указать целевую таблицу «сотрудник» для обновления в ЕКЕ

ответ

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 это помогло мне в моем случае :) –

Смежные вопросы