Esta sintaxis no funcionará en Oracle SQL.
En Oracle, puede actualizar una unión si las tablas están "conservadas por clave", es decir:
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
Suponiendo que b_pk
es la clave principal de b
, aquí la combinación es actualizable porque para cada fila de A hay como máximo una fila de B, por lo tanto, la actualización es determinista.
En su caso, dado que el valor actualizado no depende de otra tabla, podría usar una actualización simple con una condición EXISTE, algo como esto:
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)