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)
); ------