में किसी तालिका नाम के बजाय एक सबक्वायरी का उपयोग करने के लिए मुझे एक अपडेट स्टेटमेंट लिखने की आवश्यकता है जो कई पंक्तियों का उपयोग करता है यह निर्धारित करने के लिए कि कौन सी पंक्तियों को अद्यतन करना है, क्योंकि ओरेकल में, एकाधिक तालिकाओं की अनुमति नहीं है। निम्न क्वेरी एक "ORA-00971: लापता सेट कीवर्ड" वापस आ जाएगी त्रुटिओरेकल अपडेट स्टेटमेंट
UPDATE
TABLE1 a,
TABLE2 b
SET
a.COL1 = 'VALUE'
WHERE
a.FK = b.PK
AND b.COL2 IN ('SET OF VALUES')
ओरेकल पर अद्यतन बयान वाक्य रचना अवलोकन किया जा रहा है, मैं निम्नलिखित link पाया है, जो दिखाता है कि आप एक के स्थान पर एक सबक्वेरी उपयोग कर सकते हैं तालिका नाम।
जब मैं इस तरह क्वेरी लिखने का प्रयास किया है, मैं एक "ORA-01,779: एक स्तंभ जो एक गैर कुंजी से संरक्षित मेज पर नक्शे संशोधित नहीं कर सकते" मिल गया
UPDATE
(
SELECT
a.COL1
FROM
TABLE1 a,
TABLE2 b
WHERE
a.FK = b.PK
AND b.COL2 IN ('SET OF VALUES')
) update_tbl
SET
update_tbl.COL1 = 'VALUE'
मैं क्वेरी को फिर से लिखने की थी (शो नीचे) इसके बजाय एक EXISTS कथन का उपयोग करके और यह ठीक काम करता है, लेकिन यह अभी भी जानना चाहेगा कि यह कैसे किया जाता है।
UPDATE
TABLE1 update_tbl
SET
update_tbl.COL1 = 'VALUE'
WHERE
EXISTS (
SELECT
1
FROM
TABLE1 a
TABLE2 b
WHERE
a.FK = b.PK
AND b.COL2 IN ('SET OF VALUES')
AND update_tbl.PK = a.PK
)
धन्यवाद! -Nate