我正在尝试从表中删除未使用的行。 这是我的问题的简化示例:
有2个表:
user table:
user_id user_name
--------------------
1 Mike
3 Carol
8 Eric
address table:
user_id address
-----------------------
1 mike@abc.com
3 carol@yyy.com
10 bob@example.com
3 carol@example.com
我想从地址表中删除未使用的地址。 如果某个地址的 user_id 确实存在于 user 表中,则该地址未被使用。 示例表中有一个未使用的地址:bob@example.com。
我是 SQL 新手,我的解决方案很丑陋:
DELETE FROM address
WHERE NOT EXISTS
( SELECT * FROM user WHERE address.user_id = user.user_id );
必须有更好的方法来做到这一点。 最好的方法是什么?
使用了sqlite。
最佳答案
这样做:
DELETE FROM address
WHERE user_id NOT IN (SELECT user_id FROM user);
关于sql - 如何使用 SQL 从数据库表中删除未使用的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8519902/