根据其他表上的条件编辑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,但我不是开发人员,因此我不确定这是否正确