2012-07-18 30 views
0

正在尋找查詢,刪除其父母標識與主記錄不匹配的子表的所有記錄。MySQL - 如何刪除不匹配的記錄

主從表

1. David 
2. Fin 
3. Lisa 

兒童表

1. 100 
1. 200 
2. 200 
2. 222 
8. 100 
9. 100 

輸出所需的子表

1. 100 
1. 200 
2. 200 
2. 222 

想要從子表中刪除記錄#8和9,因爲它沒有父母id。

感謝

+0

究竟如何主表與子表關聯?現在你已經有了一些蘋果和一些桔子,並正在要求一個管鉗。 – 2012-07-18 03:40:34

回答

1

您可以使用外連接的DELETE操作:

DELETE a 
FROM child a 
LEFT JOIN master b ON a.parent_id = b.id 
WHERE b.id IS NULL 

爲了防止需要做到這一點,你應該看看什麼成是當你刪除了執行Referential CASCADE行動父母(在主表中的行)。

如果你有一個ON DELETE CASCADE建立在你的孩子表的外鍵,將都與其對應的「孩子」的那個被刪除任何父刪除。

+0

Fab ......一如既往......感謝Zane ...... – Fou 2012-07-18 03:40:49