SQL Server比较2个表中的一列并更新第二个表中的另一列

时间:2018-07-31 14:45:37

标签: sql-server validation sql-update

我有2个表,其列如下:

表1

*:after {
    content: "\200E‎";
}
*:before {
    content: "\200E‎";
}

表2

company_name | company_id | update_dt | update_user

我必须比较两个表中company_id列的记录,对于company_name | company_id | location | validation_sw | update_dt | update_user Table-2中与company_ids匹配的所有记录,我必须更新相应的{{1 Table-1中的}}为'Y',对于validation_sw中的所有其他记录,我必须将Table 2更新为'N'。另外,由于每个Table-2都映射到不同的validation_sw列,因此我只需要考虑company_id中不同的Table-2列。

我创建了以下查询(未考虑company_id中不同的location的问题,但它仍然无法正常工作,因为它将所有记录更新为“ Y”或“ N”,而不仅仅是将将记录与“ Y”匹配,其他与“ N”匹配)

查询:

company_id

请帮助我修改查询,以仅将匹配的Table-2记录的UPDATE Table-2 SET validation_sw = CASE WHEN validation_sw in ( SELECT validation_sw FROM Table-2 tb2 INNER JOIN Table-1 tb1 ON tb1.company_id = tb2.company_id ) THEN 'Y' ELSE 'N' END; 更新为'Y',而将其他记录的'N'更新为{ {1}}

1 个答案:

答案 0 :(得分:0)

代替:

CASE WHEN validation_sw in ( 
     SELECT validation_sw
...

您应该使用Company_id代替validation_sw

CASE WHEN company_id in ( 
     SELECT company_id
...