Mysql 每行检查一个字段是否在另一个 table 中,如果不在则删除该行

Mysql for each row check to use if a field is in another table and if not delete that row

我有两个table,第一个叫'users',第二个叫'profiles'。两个 table 都有一个名为 'id' 的字段,配置文件 table 也有一个名为 'user_id' 的字段,我用它来连接两个 table。长话短说,当用户被删除时,他们的个人资料不存在(该问题已解决),我想在个人资料 table 中找到所有没有用户连接的个人资料。我需要以某种方式检查配置文件 table 中的每一行,以查看 'user_id' 字段是否存在于字段 'id' 下的 'users' table 中以及是否存在不要删除配置文件 table 中包含 'user_id'.

的行

您可以使用 not exists:

select p.*
from profiles p
where not exists (select 1 from users u where p.profile_id = u.id);

如果要删除行:

delete p from profiles p
where not exists (select 1 from users u where p.profile_id = u.id);