您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何在Oracle中使用内部联接进行更新

如何在Oracle中使用内部联接进行更新

该synthax在Oracle sql中不起作用。

在Oracle中,如果表是“键保留”的则可以更新联接,即:

UPDATE (SELECT a.val_a, b.val_b
          FROM table a
          JOIN table b ON a.b_pk = b.b_pk)
   SET val_a = val_b

假设这b_pk是的主键b,则此连接是可更新的,因为对于A的每一行,B 只有一行,因此该更新是确定性的。

在您的情况下,由于更新后的值不依赖于另一个表,因此您可以使用具有EXIST条件的简单更新,如下所示:

UPDATE mytable t
   SET t.VALUE = 'value'
 WHERE EXISTS 
       (SELECT NULL
          FROM tableb b
         INNER JOIN tablec c ON c.id = b.id
         INNER JOIN tabled d ON d.id = c.id
         WHERE t.id = b.id
           AND d.key = 1)
Oracle 2022/1/1 18:52:10 有353人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶