[英]update data based on another table
我有一个包含以下字段的用户表
id int
name varchar
dob date/time
现在,我有另一个表叫做user_map表,其中有2个字段
oldid int
newid int
user_map表用于存储用户ID映射,字段“ oldid”是用户的旧ID(这是用户表中的当前用户ID),“ newid”是将要分配的用户ID
我需要一个更新查询,该查询可以更新用户表中所有用户的用户ID
应该如何运作? 好吧,对于用户表中的每个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个查询中使用吗?
您是否尝试过:更新用户,将user_map设置为user.id = user_map.newid,其中user.id = user_map.oldid;
检查以下查询
update `user table` a, `user_map` b set a.id=b.newid where a.id=b.oldid
该查询足以更新主表
您可以尝试使用以下内容-
从用户un,user_map um更新用户集id = um.newid,其中un.id = um.oldid
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.