根据另一个表更新数据

时间:2011-09-22 04:10:25

标签: mysql sql

我有一个包含以下字段的用户表

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个查询中进行?

3 个答案:

答案 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