Mysql 如何根据每个id更新所有行

Mysql 如何根据每个id更新所有行,mysql,sql,join,inner-join,Mysql,Sql,Join,Inner Join,我有一个场景,我有三张桌子 用户(id\u用户,电子邮件…) 登录(id\u登录,电子邮件…) 活动(id\u活动,id\u用户,id\u登录) 一些用户已从表用户迁移到登录名。活动表现在添加了一个新字段id\u login,该字段为空。我想用新id更新活动表(id\u login)字段,这些用户现在已经在Logins表中获得了新id。电子邮件当然是独一无二的,可以用于加入,但我不知道如何做到这一点 有什么建议吗?我现在假设只有用户ID的活动表也必须用登录ID更新 你可以试试这个: update

我有一个场景,我有三张桌子

用户(
id\u用户
电子邮件
…)

登录(
id\u登录
电子邮件
…)

活动(
id\u活动
id\u用户
id\u登录

一些用户已从表用户迁移到登录名。活动表现在添加了一个新字段
id\u login
,该字段为空。我想用新id更新活动表(
id\u login
)字段,这些用户现在已经在Logins表中获得了新id。电子邮件当然是独一无二的,可以用于加入,但我不知道如何做到这一点


有什么建议吗?

我现在假设只有用户ID的活动表也必须用登录ID更新

你可以试试这个:

update Campaigns c
set id_login=(
       select id_login from Logins 
       where email like (select email from Users where id_user = c.id_user )
      )
where id_user > 0

但是活动表中没有电子邮件(c.email)。我是弄错了还是搞错了?另外,你能告诉我为什么使用(不存在的地方)我也没有得到这个零件吗。谢谢。@Shaonline是的,这是个错误。我已经纠正了他们两个。我之前假设“migrated”也意味着从原始表中删除。
    update Campaigns b
set id_login=(
       select id_login from Logins
       where not exists (select * from Users where email like b.email)
      ); ------