MySQL - 如何删除不匹配的记录

时间:2012-07-18 03:33:39

标签: mysql

查找查询,删除父ID与主记录不匹配的子表的所有记录。

主表

 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。

由于

1 个答案:

答案 0 :(得分: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,那么任何被删除的父级 都具有所有相应的“孩子们“也被删除了。”