Deze synthax werkt niet in Oracle SQL.
In Oracle kunt u een join bijwerken als de tabellen "key-preserved" zijn, dat wil zeggen:
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
Ervan uitgaande dat b_pk
is de primaire sleutel van b
, hier kan de join worden bijgewerkt omdat er voor elke rij van A maximaal . is één rij vanaf B, daarom is de update deterministisch.
In jouw geval, aangezien de bijgewerkte waarde niet afhankelijk is van een andere tabel, zou je een eenvoudige update kunnen gebruiken met een EXIST-voorwaarde, zoiets als dit:
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)