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

Oracle sql MERGE INTO एक सिंगल जहाँ क्लॉज के साथ

इस उदाहरण के लिए आपकी समस्या निश्चित रूप से USING सबक्वेरी में है। यह क्वेरी table2.column1 . के एक से अधिक मान उत्पन्न करती है :

SELECT DISTINCT table2.column1, 
        view1.column2
 FROM SCHEMA2.TABLE_2 table2
 LEFT JOIN SCHEMA2.VIEW_1 view1
 ON table2.column2 = view1.column3

तो ON क्लॉज table1 . में उसी पंक्ति (पंक्तियों) से मेल खाएगा एक से अधिक बार:

ON (table1.column3 = t2.column1 )

Oracle यह पता नहीं लगा सकता कि t2.column2 . का कौन-सा मान है अद्यतन में उपयोग किया जाना चाहिए, इसलिए यह ORA-30926 को नुकसान पहुंचाता है ।

सबक्वायरी में विशिष्ट का उपयोग करने से मदद नहीं मिलती है क्योंकि यह सभी स्तंभों के क्रमपरिवर्तन देता है। आपको एक सबक्वेरी लिखनी होगी जो t2.column1 . के अद्वितीय मान उत्पन्न करेगी सभी पंक्तियों में, या एक अद्वितीय कुंजी उत्पन्न करने के लिए एक और पहचान कॉलम जोड़ें जिसे आप table1 में शामिल कर सकते हैं .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ओरेकल फॉर्म में डीएलएल (सी #) से फ़ंक्शन को आमंत्रित करें

  2. ग्राहक.पीके_नाम लेनदेन में शामिल होना। एफके_नाम बनाम ग्राहक। पीके_आईडी [धारावाहिक] लेनदेन में शामिल होना। एफके_आईडी [पूर्णांक]

  3. एसक्यूएल भुगतान वितरण

  4. SQL उप-क्वेरी - न्यूनतम मान कैसे खोजें

  5. NOT IN क्लॉज में एक सीमांकित स्ट्रिंग पास करना