如何使用SQL从DB表中删除未使用的行?

SKi*_*SKi 7 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
Run Code Online (Sandbox Code Playgroud)

我想从地址表中删除未使用的地址.如果用户表中存在地址的user_id,则该地址未使用.示例表中有一个未使用的地址:bob@example.com.

我是SQL新手,我的解决方案很难看:

DELETE FROM address 
  WHERE NOT EXISTS 
   ( SELECT * FROM user WHERE address.user_id = user.user_id );
Run Code Online (Sandbox Code Playgroud)

必须有更好的方法来做到这一点.最好的方法是什么?

使用sqlite.

Dar*_*jar 5

像这样做:

DELETE FROM address
    WHERE user_id NOT IN (SELECT user_id FROM user);
Run Code Online (Sandbox Code Playgroud)