如何从另一个表更新一个表

zjf*_*fdu 28 oracle

我有一个表 A 有列 (id, field_1,field_2),另一个表 B 有列 (id,field_2)

现在我想将表 B 合并到 A,这意味着我想将表 A 中的 field_2 更新为表 B 的值。那么如何实现呢?顺便说一句,我正在使用 oracle

谢谢

a_h*_*ame 30

关联子查询的另一种方法(由 Kerri 建议)是使用 MERGE 语句,这可能比子选择(只能通过查看两个语句的执行计划来验证)更有效。

MERGE INTO table_b 
USING 
(
  SELECT id,
         field_2
  FROM table_a
) ta ON (ta.id = table_b.id)
WHEN MATCHED THEN UPDATE 
    SET table_b.field_2 = ta.field_2
Run Code Online (Sandbox Code Playgroud)

  • 对`MERGE` 语句的唯一限制是你不能更新它所连接的列,即你不能更新在`ON` 子句中使用的列。 (2认同)

Ker*_*tts 15

完全确定您在此之后想要什么,但这应该是一次性的,或者通过预定的工作连续工作:

UPDATE table_a a
   SET field_2 = ( SELECT field_2
                     FROM table_b b
                    WHERE b.id = a.id )
;
Run Code Online (Sandbox Code Playgroud)

现在,每次执行上述操作时,它都会在表中的所有行中执行。如果这是你需要一直做的事情,我会建议其他的东西,但对于一次性或非常小的桌子,它应该足够了。