我有一个包含以下字段的用户表
id int
name varchar
dob date/time
现在,我有另一个名为user_map的表,有2个字段
oldid int
newid int
user_map表用于存储用户id映射,字段'oldid'是用户的旧id(来自用户表的当前用户id),'newid'是用户id将被分配
我需要一个更新查询,可以更新用户表
中所有用户的用户ID它应该如何运作?好吧,对于user表中的每个id,user_map表中只有1个匹配的记录。
用户表中的id与user_map表中的oldid匹配,应该用newid替换
例如(请忽略dob字段)
用户表
id name dob
1 aaa 0000-00-00 00:00:00
2 bbb 0000-00-00 00:00:00
3 ccc 0000-00-00 00:00:00
user_map表
oldid newid
1 6
2 7
3 8
查询后,用户表应该看起来像
用户表
id name dob
6 aaa 0000-00-00 00:00:00
7 bbb 0000-00-00 00:00:00
8 ccc 0000-00-00 00:00:00
我怎样才能做到这一点?是否只能在1个查询中进行?
答案 0 :(得分:0)
你试过了吗? update user,user_map set user.id = user_map.newid where user.id = user_map.oldid;
答案 1 :(得分:0)
检查以下查询
update `user table` a, `user_map` b set a.id=b.newid where a.id=b.oldid
此查询足以更新主表
答案 2 :(得分:0)
您可以尝试使用以下内容 -
更新用户 组 id = um.newid 从 用户联合国 user_map嗯 哪里 un.id = um.oldid