繁体   English   中英

根据另一个表更新数据

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM