根据其他表上的条件编辑SQL表中的值

时间:2015-06-30 11:32:58

标签: sql sql-server

我们有2张桌子。

第一个表名为USER_CARD_MANAGEMENT,有两列:card_IDUser_ID

第二个表名为USER_MANAGEMENT,有3列:user_IDUSER_NameDomain

我们在第二个表中有一些记录,其中user_name与两个不同的域(根域,子域)重复。

我们需要替换user_ID如果它属于子域以匹配user_ID(根域),则从第二个表中删除子域的记录。

示例数据:

USER_CARD_MANAGEMENT 
 UserID  CARd_id
      1  5566889
      6  6575900
     11  5678809
     26  4335679

USER_MANAGEMENT
UserID  USER_NAME    Domain
     1  mike.smith   child
     2  mike.smith   root
     3  Dina.tom     root 
     4  hala.viktor  root
    11  Nada.peter   child
    12  nada.peter   root

如果我们在第二个表中有一个重复的user_name来匹配具有domain = root

的user_id,我只需要编辑第一列中的ID

我们如何实现这一目标?

1 个答案:

答案 0 :(得分:0)

假设您可以确定没有两个用户具有相同的名称,请尝试:

    UPDATE ucm
       SET User_Id = COALESCE(um2.User_id, um.User_id) FROM user_card_management ucm
      JOIN user_management       um  ON ucm.user_id = um.user_id
 LEFT JOIN user_management      um2  ON um2.user_name = um.user_name
                                    AND um.domain = 'child'
                                    AND um2.domain = 'root'