我有一个数据库,其中article.cat_id
与category.id
相关联。
我从category
删除了几行,现在我想从article
中选择或删除链接到id
中不存在的category
的所有行。不幸的是,我并不确切知道哪些id
已被移除。
是否有一种SQL方法可以检查以返回article
中没有category.id
等于article.cat_id
的所有行?
答案 0 :(得分:2)
例如
SELECT * FROM Table_1 where Table_1.ID not in (SELECT Table_2.ID FROM Table_2)
内部选择它将选择表2中的所有ID,而外部选择它将基于表2中不存在ID的返回行
答案 1 :(得分:1)
DELETE a.*
FROM article a
LEFT JOIN category c
ON a.cat_id = c.id
WHERE c.id IS NULL
首先将DELETE
更改为SELECT
,以确保它符合您的要求。
答案 2 :(得分:0)
delete a
from article a
left outer join category c on c.id = a.cat_id
where c.id is null