Este synthax no funcionará en Oracle SQL.
En Oracle a veces se puede actualizar una unión si las tablas son "conservada 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 primaria de b
, aquí la unió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 ya que el valor actualizado no depende de otra mesa se puede utilizar una simple actualización con una condición de existir, 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)
¿Puede ampliar su respuesta para incluir una explicación de tu código? Le ayuda al lector más de lo que piensas. – gunr2171
la palabra clave 'in' no funcionará si hay más de 1000 registros. Entonces esta respuesta no es válida. –