Esta sintaxe não funcionará no Oracle SQL.
No Oracle, você pode atualizar uma junção se as tabelas forem "preservadas por chave", ou seja:
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
Supondo que
b_pk
é a chave primária de b
, aqui a junção é atualizável porque para cada linha de A há no máximo uma linha de B, portanto, a atualização é determinística. No seu caso, como o valor atualizado não depende de outra tabela, você pode usar uma atualização simples com uma condição EXIST, algo assim:
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)