如何使用JOIN语句从表中删除?

时间:2013-07-04 12:45:40

标签: mysql

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

items cat_id;和 catalogid

。{

我想删除items中不在catalog内的所有记录。

感谢。

3 个答案:

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