2012-07-18 29 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