Этот синтаксис не будет работать в Oracle SQL.
В Oracle вы можете иногда обновлять объединения, если таблицы «ключ сохранившийся», а именно:
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
Предполагая, что b_pk
является первичным ключом b
, здесь присоединиться к изменяемым, потому что для каждой строки из A есть не более одна строка от B, поэтому обновление детерминировано.
В вашем случае, поскольку обновленное значение не зависит от другой таблицы можно использовать простое обновление с условием EXIST, что-то вроде этого:
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)
Вы можете расширить свой ответ включать объяснение вашего кода? Это помогает читателю больше, чем вы могли бы подумать. – gunr2171
«В» ключевое слово не будет работать, если имеется более 1000 записей. Таким образом, этот ответ недействителен. –