Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
根据其他表上的条件编辑SQL表中的值_Sql_Sql Server - Fatal编程技术网

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

根据其他表上的条件编辑SQL表中的值,sql,sql-server,Sql,Sql Server,我们有两张桌子 第一个表称为USER\u CARD\u MANAGEMENT,有两列:CARD\u ID,USER\u ID 第二个表称为USER\u MANAGEMENT,共有3列:USER\u ID,USER\u Name,Domain 我们在第二个表中有一些记录,其中用户名在两个不同的域(根域、子域)中重复 我们需要替换用户ID,如果它属于要匹配用户ID(根域)的子域,则从第二个表中删除子域的记录 样本数据: USER_CARD_MANAGEMENT UserID CARd_id

我们有两张桌子

第一个表称为
USER\u CARD\u MANAGEMENT
,有两列:
CARD\u ID
USER\u ID

第二个表称为
USER\u MANAGEMENT
,共有3列:
USER\u ID
USER\u Name
Domain

我们在第二个表中有一些记录,其中用户名在两个不同的域(根域、子域)中重复

我们需要替换
用户ID
,如果它属于要匹配
用户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
只要我需要编辑第一列中的ID,如果我们在第二个表中有一个重复的用户名,以匹配具有domain=root的用户名


我们如何才能做到这一点?

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

    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'

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

    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'

您使用的是MySQL还是SQL Server?(不要标记未涉及的产品。)答案可能取决于所使用的dbms…首先,您应该确定使用的是什么数据库,并适当标记问题。你还应该用样本数据和期望的结果编辑问题。你尝试过什么?如果我没有看错的话,这似乎是一个相当直截了当的问题。您所说的“如果用户_ID属于子域,则需要替换用户_ID以匹配用户_ID”是指我使用SQL,但我不是开发人员,因此我不确定这是否正确。您使用的是MySQL还是SQL Server?(不要标记未涉及的产品。)答案可能取决于所使用的dbms…首先,您应该确定使用的是什么数据库,并适当标记问题。你还应该用样本数据和期望的结果编辑问题。你尝试过什么?如果我没有看错的话,这似乎是一个相当直截了当的问题。您所说的“如果属于子域,则需要替换用户\u ID以匹配用户\u ID”是指我使用SQL,但我不是开发人员,因此我不确定这是否正确