2016-05-25 486 views
1

我有一個像「馬克安東尼」,「詹姆斯邦德」等名稱的客人名單,其中約1000人。 現在在另一個表中我有類似的列表。我想清理我的名字的列表,以便刪除也是清單2.如何刪除MySql中的重複項?

所以,如果詹姆斯·邦德是名單2,那麼它應該從列表中刪除該字段1

+0

從table1中選擇row_id其中name(從table2中選擇名稱)這裏是您的常用項目列表。 DELETE FROM table1 where row_id in(select table_id from table1 where name in(select from table2)) –

回答

0

在這裏你去任何名稱。

Delete FROM table1 
WHERE name1 
IN 
(
SELECT 
name2 
FROM table2 
); 
+0

我試過你的方法在我的160.000列表和phpmyadmin掛出了30分鐘,然後我重新啓動了mysql服務器 –

+0

雖然IN不能正常工作通常對於大量的數據集,如果它已經掛起你的服務器,我會懷疑問題是否與索引有關。你在他們各自的表上的name1和name2字段上有索引嗎? – Kickstart

1

試試這個;)

DELETE list1 FROM list1 
LEFT JOIN list2 ON list1.name = list2.name 
WHERE list2.name IS NOT NULL; 
+0

輕微的語法問題。在DELETE上進行連接時,您需要指定要從中刪除的表。所以_DELETE list1 FROM list1左外連接等_ – Kickstart

+1

@Kickstart感謝您的catch.Updated:D – Blank

0

可以使用子查詢做到這一點。

delete 
from list1 
where exists (select 1 
       from list2 
       where list2.name = list1)