Sintaks ini tidak akan berfungsi di Oracle SQL.
Di Oracle Anda dapat memperbarui gabungan jika tabel "dipertahankan kunci", yaitu:
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
Dengan asumsi bahwa b_pk
adalah kunci utama b
, di sini gabungan dapat diperbarui karena untuk setiap baris A ada paling banyak satu baris dari B, oleh karena itu pembaruan bersifat deterministik.
Dalam kasus Anda karena nilai yang diperbarui tidak bergantung pada tabel lain, Anda dapat menggunakan pembaruan sederhana dengan kondisi ADA, seperti ini:
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)