SQL Server - 基于另一个列值更新列

Fea*_*hal 4 insert-update sql-server-2008 sql-update

如何更新一列中TableA的值在另一个表中发现,Table B根据另一列Type中,TableA

例如

表A.

Location Type Value
  USA    Dog   20
  UK     Cat   30
Run Code Online (Sandbox Code Playgroud)

表B.

Dog   Cat Rabbit
 50   70    100
Run Code Online (Sandbox Code Playgroud)

逻辑:

  • 如果tableA.Value = Dog那么更新TableA.Value = TableB.Dog
  • 如果tableA.Value = Cat那么更新TableA.Value = TableB.Cat
  • 如果tableA.Value = Rabbit那么更新TableA.Value = TableB.Rabbit

注意:只有3个选项,所以硬编码是可以的.

结果

表A.

Location Type  Value
USA      Dog   50
UK       Cat   70
Run Code Online (Sandbox Code Playgroud)

Adr*_*der 6

怎么样的

UPDATE TableA
SET Value = 
CASE Type
  WHEN 'DOG' then B.Dog
  WHEN 'CAT' then B.Cat
  WHEN 'RABBIT' then B.Rabbit
  ELSE Value
END
FROM TableB b
Run Code Online (Sandbox Code Playgroud)

SQL Fiddle DEMO