2013-07-24 100 views
0

我正在尋找一種方法來刪除表中的所有重複記錄。 我有一個查詢,但沒有奏效:如何刪除表格中的所有重複記錄?

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

服務器響應:

錯誤代碼:1093您不能指定目標表「LISTA」的更新在 FROM子句

這個查詢:

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

運作良好。

錯誤在哪裏?

+0

您正在使用什麼數據庫管理系統? –

+0

我正在使用MySQL服務器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