我找到的所有例子都不适用于我的案例。我有2张桌子:
items
cat_id
;和
catalog
与id
我想删除items
中不在catalog
内的所有记录。
感谢。
答案 0 :(得分:4)
delete i
from items i
left join catalog c on c.id = i.cat_id
where c.id is null
答案 1 :(得分:2)
您可以使用左连接进行删除,如其他一些答案中所示,但是这个也适用,并且更容易移植到其他数据库,这些数据库并不总是支持delete语句中的左连接构造。
delete from items
where cat_id not in (select id from catalog)
顺便说一句,如果您有适当的外键约束,则不应该存在引用不存在的类别的项目。我认为你应该考虑制定这些限制因素。
答案 2 :(得分:1)
DELETE FROM items i
LEFT JOIN catalog c ON i.cat_id = c.id
WHERE c.id IS NULL;