Ta składnia nie będzie działać w Oracle SQL.
W Oracle możesz zaktualizować sprzężenie, jeśli tabele są „zachowane przez klucz”, 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
Zakładając, że b_pk
jest głównym kluczem b
, tutaj połączenie można aktualizować, ponieważ dla każdego wiersza A jest co najwyżej jeden wiersz od B, dlatego aktualizacja jest deterministyczna.
W twoim przypadku, ponieważ zaktualizowana wartość nie zależy od innej tabeli, możesz użyć prostej aktualizacji z warunkiem EXIST, na przykład tak:
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)