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

Ema*_*sev 9 mysql sql

2个表:
items(id,...)
users(id,item_id,...)

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

Jan*_*net 11

请注意,NOT IN可能非常慢.有时候 - 令人费力 - 这样做的速度更快:

DELETE FROM items WHERE id IN
(SELECT id FROM items EXCEPT SELECT item_id FROM users)
Run Code Online (Sandbox Code Playgroud)


mik*_*kej 5

DELETE FROM items WHERE id NOT IN (SELECT item_id FROM users)
Run Code Online (Sandbox Code Playgroud)

(使用子查询来选择所有item_idsusers,然后删除从记录items那里id是不是在子查询的结果)