【发布时间】:2019-03-29 09:26:55
【问题描述】:
我有一个table A,有 2 个主要列:Name 和 Settings。
Settings 列将有 3 个值:1、2 或 3。
例如:
Name Settings
Andre 1
Andre 1
Betty 3
Charles 1
Charles 1
注意1个Name只能有1个Settings:1、2或3
我还有另一个 table B,有 2 个主要列:Name 和 Type。
Type 列包含许多值:'TypeA'、'TypeB'、'TypeC'......
例如:
Name Type
Andre TypeA
Andre TypeA
Andre TypeC
Betty TypeB
Betty TypeB
Charles TypeB
Charles TypeA
Charles TypeA
请注意,1 个Name 可以有多个相同或不同的Type。我们只考虑TypeA 和TypeB。
现在我想使用来自table B 的'Type' 列从table A 更新Settings 列,如果:
-
table B中的Type列的值为'TypeA',然后将两个表中具有相同Name的所有记录设置为table A中的Settings列上的1 @。 -
table B中的Type列的值为'TypeB',然后将两个表中具有相同Name的所有记录设置为来自@9876543555 的Settings列上的2 @。 -
table B中的Type列同时具有'TypeA'和'TypeB'的值,然后将两个表中具有相同Name的所有记录设置为@ 上的3 987654361@ 列来自table A。
table A 的结果会变成这样:
Name Settings
Andre 1
Andre 1
Andre 1
Betty 2
Charles 3
Charles 3
我该怎么做? 到目前为止我尝试过的:
UPDATE a
SET a.Settings = CASE b.Type
WHEN 'TypeA' THEN 1
WHEN 'TypeB' THEN 2
END
FROM tablsA a
JOIN tableB b
ON a.name = b.name
WHERE type IN ('TypeA', 'TypeB')
【问题讨论】:
标签: sql sql-server tsql sql-update