如何从“登台”表中替换符合条件的每一行的值?

时间:2018-12-06 21:12:46

标签: sql oracle

假设我有一个包含以下数据的表(Table1)。

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 ,并将VALUE设置为 CALC_VALUE 列或 DEFAULT_VALUE 列中的值来自 MV1 。以下是我的尝试:

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

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

1 个答案:

答案 0 :(得分:1)

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

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