查找查询,删除父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。
由于
答案 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
,那么任何被删除的父级 都具有所有相应的“孩子们“也被删除了。”