0

查找查询,删除父 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。

谢谢

4

1 回答 1

1

您可以在操作中使用外部联接DELETE

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

为避免需要这样做,您应该查看每当您删除父级(主表中的行)时执行的引用 CASCADE操作。

如果您ON DELETE CASCADE在子表中设置了外键,则任何被删除的父级将删除其所有相应的“子级”。

于 2012-07-18T03:35:18.557 回答