यह सिंथैक्स 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 की प्रत्येक पंक्ति के लिए अधिकतम . है बी से एक पंक्ति, इसलिए अद्यतन नियतात्मक है।
आपके मामले में चूंकि अद्यतन मूल्य किसी अन्य तालिका पर निर्भर नहीं है, इसलिए आप एक 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)