Denne syntaks virker ikke i Oracle SQL.
I Oracle kan du opdatere en join, hvis tabellerne er "nøglebevarede", dvs.:
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
Forudsat at b_pk
er den primære nøgle til b
, her kan joinforbindelsen opdateres, fordi der for hver række af A er højst en række fra B, derfor er opdateringen deterministisk.
I dit tilfælde, da den opdaterede værdi ikke afhænger af en anden tabel, kan du bruge en simpel opdatering med en EXIST-tilstand, sådan noget som denne:
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)