【问题标题】:SQL Server - update column based on another column valueSQL Server - 基于另一个列值更新列
【发布时间】:2013-09-05 20:02:06
【问题描述】:

如何根据TableA 中的另一列Type 更新在另一个表Table B 中找到的TableA 中的列值

例如

表 A

Location Type Value
  USA    Dog   20
  UK     Cat   30

表 B

Dog   Cat Rabbit
 50   70    100

逻辑:

  • 如果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

【问题讨论】:

    标签: sql-server-2008 sql-update insert-update


    【解决方案1】:

    怎么样

    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
    

    SQL Fiddle DEMO

    【讨论】:

      猜你喜欢
      • 2023-01-12
      • 1970-01-01
      • 2015-05-02
      • 2019-08-10
      • 2021-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多