Tato syntaxe nebude fungovat v Oracle SQL.
V Oracle můžete aktualizovat spojení, pokud jsou tabulky "key-preserved", tj.:
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
Za předpokladu, že b_pk
je primární klíč b
, zde je spojení aktualizovatelné, protože pro každý řádek A je maximálně jeden řádek od B, proto je aktualizace deterministická.
Ve vašem případě, protože aktualizovaná hodnota nezávisí na jiné tabulce, můžete použít jednoduchou aktualizaci s podmínkou EXIST, něco takového:
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)