返回表中无法在另一个表中找到cat_id的所有行

时间:2013-06-01 09:09:16

标签: mysql sql database

我有一个数据库,其中article.cat_idcategory.id相关联。

我从category删除了几行,现在我想从article中选择或删除链接到id中不存在的category的所有行。不幸的是,我并不确切知道哪些id已被移除。

是否有一种SQL方法可以检查以返回article中没有category.id等于article.cat_id的所有行?

3 个答案:

答案 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