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