删除未从另一个表引用的表的所有记录

时间:2010-06-19 08:11:48

标签: sql mysql

2表:
items(id,...)
用户(id,item_id,...)

如何删除未从用户引用的项目中的所有记录?

3 个答案:

答案 0 :(得分:11)

请注意,NOT IN可能非常慢。有时 - 足够 - 这样做的速度更快:

DELETE FROM items WHERE id IN
(SELECT id FROM items EXCEPT SELECT item_id FROM users)

答案 1 :(得分:5)

DELETE FROM items WHERE id NOT IN (SELECT item_id FROM users)

(使用subqueryitem_ids中选择所有users,然后删除itemsid不在其结果中的记录子查询)

答案 2 :(得分:2)

delete from items
where id not in (select item_id from users)