我有两个表(如下所示),我需要根据表2中的语言更新table1&#39s的列。
像这样(但它的语法无效):
UPDATE Table1
If table2.language='EN'
SET description_EN = Table2.Description
Else
SET description_FR=table2.description
FROM table1
left outer join table2 on table1.id=table2.id
表1:
id description_EN Description_FR
1 null null
2 null null
3 null null
表2:
id Language Description
1 EN description in English 1
1 FR description in French 1
2 EN description in English 2
2 FR description in French 2
3 EN description in English 3
3 FR description in French 3
答案 0 :(得分:1)
对每列使用CASE
,如果语言匹配则返回已连接的描述,如果不是正确的语言,则返回self(即无更改):
UPDATE Table1 SET
description_EN = CASE WHEN table2.language = 'EN' THEN Table2.Description else description_EN END,
description_FR = CASE WHEN table2.language = 'FR' THEN Table2.Description else description_FR END
FROM table1
JOIN table2 on table1.id = table2.id
这会将每种语言连接到该行,但只在适当时进行更改。
答案 1 :(得分:0)
您可以使用CASE
声明执行此操作:
Update T1
Set description_EN = Case When T2.Language = 'EN'
Then T2.Description
Else T1.description_EN
End,
description_FR = Case When T2.Language <> 'EN'
Then T2.Description
Else T1.description_FR
End
From Table1 T1
Left Join Table2 T2 On T1.Id = T2.Id
这会检查Language
是否为EN
并更新该值,否则会将其设置为等于自身。
同样适用于FR
。