sql - 如何使用 SQL 从数据库表中删除未使用的行?

标签 sql sqlite

我正在尝试从表中删除未使用的行。 这是我的问题的简化示例:

有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/

相关文章:

sql - 在 SQL 中选择最大订单号

python - Django登录错误: “attempt to write a readonly database” in IIS

sql - 按类型限制 SQL 结果(列值)

sql - 计算每个客户订单之间的平均时间

java - WEB-INF/context.xml 或 TOMCAT_HOME/conf/server.xml 下的 Tomcat 连接池?

mysql - sql查询查找列数据的唯一组合

python - 从一个函数获取返回值并在另一个函数上使用

c# - 将 SQLite 数据填充到 UWP 应用程序中

来自sqlite数据库的ios图像显示

ios - 获取 SQLite 上最后插入行的 ID 的最佳方法