代码之家  ›  专栏  ›  技术社区  ›  John Wick

如何为满足条件的每一行替换“临时”表中的值?

  •  0
  • John Wick  · 技术社区  · 7 年前

    假设我有一个表(表1),其中包含以下数据。

    VALUE_ID    VALUE      CODE    HOUR     TYPE
       1        null        DEF     1        REG
       2        null        DEF     2        REG
       3        null        DEF     3        REG
    

    假设我有一个物化视图(MV1)(连接两个不同的表),如下所示:

     VALUE_ID    VALUE      CODE    HOUR     TYPE     CALC_VALUE    DEFAULT_VALUE
        1        null       DEF      1        REG         8               2
        2        null       DEF      2        REG         12              1
        3        null       DEF      3        REG         25              0
    

    我想写一个更新的脚本 表1 并将该值设置为 钙质值 列或 默认值 列来自 MV1 . 以下是我的尝试:

     Update Table1
        SET value = (select calc_value from MV1)
      WHERE TYPE = 'REG' 
        AND HOUR = 2;
      COMMIT;
    

    任何帮助都将不胜感激。事先谢谢!

    1 回复  |  直到 7 年前
        1
  •  1
  •   Gordon Linoff    7 年前

    我想您只需要一个相关的子查询:

    UPDATE Table1
        SET value = (select calc_value from MV1 where table1.value_id = mv1.value_id)
        WHERE TYPE = 'REG' AND HOUR = 2;
      COMMIT;