我有两个表:
TableA
+************************************+
|Col1 | code | Country | Value2 |
+************************************+
|Field1 | IN | INDIA | NA |
|Field2 | CA | CANADA | NA |
|Field3 | US | USA | NA |
+************************************+
TableB
+***************************+
|Field1 | Field2 | Field3 |
+***************************+
|1 | 4 | IN |
|2 | 5 | CA |
|3 | 6 | - |
+***************************+
我正在尝试根据Field3
中TableB
列中的值来更新Country
中的列TableA
也就是说:如果Field3
中的TableB
的值为IN
,则应该将其更新为India
或如果Filed3
的值为CA
,则应将其更新为Canada
在第三种情况下,如果不存在匹配值,则应将其更新为“ NA”或“ NotSpecified”
到目前为止,我已经尝试使用TableB
更新INNER JOIN
:
UPDATE TableB SET TableB.Field3 = TableA.Country
FROM TableB INNER JOIN TableA ON TableB.Field3 = TableA.Code
我真的在根据多个IF
语句更新表吗?我应该使用CASE
吗?
任何帮助或建议将不胜感激。
答案 0 :(得分:2)
将LEFT JOIN
与ISNULL
一起使用。
UPDATE TableB SET
Field3 = ISNULL(TableA.Country, 'NA')
FROM
TableB
LEFT JOIN TableA ON TableB.Field3 = TableA.Code
使用LEFT JOIN
不会强制所有TableB
记录加入到TableA
记录中,并且ISNULL
将设置默认值,以防{{1 }}在Code
上不存在。