Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

ओरेकल - अपडेट जॉइन - गैर कुंजी-संरक्षित तालिका

आप इसे एक सहसंबद्ध सबक्वेरी के साथ करने में सक्षम होना चाहिए

UPDATE tbl1 t1
   SET t1.b = (SELECT c
                 FROM tbl2 t2
                WHERE t1.id = t2.id
                  AND t1.a  = t2.a
                  AND t1.b  = t2.b
                  AND t2.d  = 'a')
 WHERE t1.a = 'foo'
   AND EXISTS( SELECT 1
                 FROM tbl2 t2
                WHERE t1.id = t2.id
                  AND t1.a  = t2.a
                  AND t1.b  = t2.b
                  AND t2.d  = 'a')

UPDATE के साथ समस्या जो आपने लिखा है वह यह है कि Oracle गारंटी नहीं दे सकता कि ठीक 1 tbl2.c . है मान जो एकल tbl1.b . से मेल खाता हो मूल्य। अगर tbl2 . में एक से अधिक पंक्तियाँ हैं tbl1 . में किसी विशेष पंक्ति के लिए , सहसंबद्ध अद्यतन यह दर्शाता है कि एक एकल-पंक्ति सबक्वेरी ने कई पंक्तियों को लौटाया है, एक त्रुटि फेंकने वाला है। उस स्थिति में, आपको tbl2 से कौन सी पंक्ति निर्दिष्ट करने के लिए सबक्वेरी में कुछ तर्क जोड़ने होंगे उस मामले में उपयोग करने के लिए।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैं ssh टनल चेन (डबल टनल, कंपनी नेटवर्क में सर्वर) के माध्यम से Oracle डेटाबेस 11g सर्वर से कैसे जुड़ सकता हूं?

  2. तारों को कैसे जोड़ना है?

  3. चयन में Oracle पैरामीटर का उपयोग करने में समस्या

  4. एक एप्लिकेशन डेटाबेस अज्ञेयवादी रखना (ADO.NET बनाम एनकैप्सुलेटिंग डीबी लॉजिक)

  5. छुट्टियों को छोड़कर दो तिथियों के बीच सप्ताह के दिनों की संख्या प्राप्त करने का कार्य