sql-server-2008 - SQL Server - 根据另一列值更新列

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

如何更新 TableA 中的列在另一个表中找到的值,Table B ,取决于另一列,Type , 在 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
    

    最佳答案

    怎么样的东西

    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

    关于sql-server-2008 - SQL Server - 根据另一列值更新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18577827/

    相关文章:

    Clojure:创建或更新向量中的映射值

    php - 如何将 3 个数组插入到 2 个 MySql 表中?

    sql - 获取表行数据作为字符串以及列名

    sql - 如何在Sql Server GROUP BY格式的日期中按日期排序?

    sql - 为所选记录生成插入脚本?

    mysql - MySQL中UPDATE和两张表的性能

    SQL Server - UPDATE 语句中的 JOIN

    sql - Oracle - 更新连接 - 非键保留表

    mysql - 数据不会使用插入和右连接插入到表中

    sql - 如何从此表中检索 DISTINCT 值?