2013-07-24 3 views
0

Я ищу способ удалить все повторяющиеся записи в таблице. У меня есть запрос, но он не работает:Как удалить все повторяющиеся записи в таблице?

delete from lista 
where id in 
(
    select id 
    from lista 
    group by tytul_pl 
    having count(tytul_pl) > 1 
); 

Ответ сервера: Код

Ошибка: 1093. Вы не можете указать целевую таблицу «lišta» для обновления в ЕКОМ

Этот запрос:

select id 
from lista 
group by tytul_pl 
having count(tytul_pl) > 1 

работает хорошо.

Где ошибка?

+0

Что СУБД вы используете ? –

+0

Я использую MySQL Server 5.6 CE – user2616285

+0

Вы хотите сохранить одну запись и удалить повторы или удалить все записи, если они повторяются? –

ответ

0

Я думаю, что вы хотите, то это

DELETE lista FROM lista 
LEFT OUTER JOIN (
     SELECT MIN(ID) AS minID 
     FROM lista 
     GROUP BY tytul_pl) AS keepRowTable ON lista.ID = keepRowTable.minID 
WHERE keepRowTable.minID IS NULL 

Вы можете try it out here

+0

Спасибо! Оно работает :) – user2616285

1

Это будет работать, чтобы держать одну запись и удалить все другие дубликаты:

DELETE t1 
FROM lista t1 
JOIN lista t2 
ON t1.id > t2.id 
AND t1.tytul_pl = t2.tytul_pl 
Смежные вопросы