-4

我发现的所有例子都不适用于我的案例。我有 2 张桌子:

itemscat_id; 并 catalogid

我想删除所有items不在catalog.

谢谢。

4

3 回答 3

4
delete i
from items i
left join catalog c on c.id = i.cat_id
where c.id is null
于 2013-07-04T12:47:05.660 回答
2

您可以使用左连接进行删除,如其他一些答案中所示,但这一个也可以正常工作,并且更易于移植到在删除语句中并不总是支持左连接构造的其他数据库。

delete from items
where cat_id not in (select id from catalog)

顺便说一句,如果您有适当的外键约束,则不可能存在引用不存在类别的项目。我认为您应该考虑实施这些限制。

于 2013-07-04T12:47:19.210 回答
1
DELETE FROM items i
LEFT JOIN catalog c ON i.cat_id = c.id 
WHERE c.id IS NULL;
于 2013-07-04T12:47:47.107 回答