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

त्रुटि (एकल-पंक्ति सबक्वेरी एक से अधिक पंक्तियों को लौटाती है)

यह आपकी क्वेरी है:

select en.*,
       (select sf.red, sf.blue, sf.green, sf.yellow from data2 sf )
from data1 en;

select . में एक सबक्वेरी इस तरह प्रयोग किया जाता है जिसे स्केलर सबक्वेरी . कहा जाता है . ऐसी सबक्वेरी का उपयोग किया जा सकता है जहां एक अदिश मान (अर्थात एकल मान जैसे कोई संख्या या स्ट्रिंग) का उपयोग किया जा सकता है।

स्केलर सबक्वेरी को दो शर्तों को पूरा करना होगा:

  • यह अधिक से अधिक एक पंक्ति में लौटता है।
  • यह एक कॉलम लौटाता है।

LEFT JOIN . का उपयोग करके आपके मामले में समाधान आसान है :

select en.*, sf.red, sf.blue, sf.green, sf.yellow 
from data1 en left join
     data2 sf
     on 1=1;

या, Oracle 12C में, आप लेटरल जॉइन का उपयोग कर सकते हैं:

select en.*, sf.red, sf.blue, sf.green, sf.yellow 
from data1 en left join lateral
     data2 sf
     on 1=1;

इस मामले में दोनों एक जैसे दिखते हैं, लेकिन एक लेटरल जॉइन का उपयोग सहसंबद्ध सबक्वेरी के लिए भी किया जा सकता है।




  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. Oracle बाहरी दूसरी तालिका पर फ़िल्टर स्थिति के साथ जुड़ता है

  4. क्या Oracle Sql में !=और <> के बीच कोई अंतर है?

  5. org.hibernate.tool.schema.spi.CommandAcceptanceException:आदेश निष्पादित करने में असमर्थ