このシンタックスは、OracleSQLでは機能しません。
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から1行であるため、更新は決定論的です。
あなたの場合、更新された値は別のテーブルに依存しないため、次のような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)