PostgreSQL के EXCEPT . का उपयोग करते समय ऑपरेटर, यदि आपको कोई त्रुटि मिलती है जिसमें लिखा है "त्रुटि:प्रत्येक EXCEPT क्वेरी में समान संख्या में कॉलम होने चाहिए ", ऐसा इसलिए है क्योंकि EXCEPT के दोनों ओर क्वेरी द्वारा लौटाए गए कॉलम की संख्या में बेमेल है ऑपरेटर।
इसे ठीक करने का तरीका यह सुनिश्चित करना है कि दोनों SELECT कथन समान संख्या में कॉलम लौटाते हैं।
त्रुटि का उदाहरण
यहां कोड का एक उदाहरण दिया गया है जो त्रुटि उत्पन्न करता है:
SELECT TeacherName FROM Teachers
EXCEPT
SELECT StudentId, StudentName FROM Students; परिणाम:
ERROR: each EXCEPT query must have the same number of columns LINE 3: SELECT StudentId, StudentName FROM Students;
यहां, पहला SELECT स्टेटमेंट एक कॉलम लौटाता है (TeacherName ), लेकिन दूसरा SELECT स्टेटमेंट दो कॉलम लौटाता है (StudentId और StudentName )।
समाधान
समाधान यह सुनिश्चित करना है कि SELECT . दोनों को सुनिश्चित किया जाए कथन समान संख्या में कॉलम लौटाते हैं
उपरोक्त उदाहरण का उपयोग करके, हम या तो अपने दूसरे SELECT . से अतिरिक्त कॉलम को हटा सकते हैं कथन:
SELECT TeacherName FROM Teachers
EXCEPT
SELECT StudentName FROM Students; परिणाम:
teachername ------------- Cathy Ben
एक अन्य विकल्प प्रासंगिक कॉलम को पहले SELECT . में जोड़ना है कथन:
SELECT TeacherId, TeacherName FROM Teachers
EXCEPT
SELECT StudentId, StudentName FROM Students; परिणाम:
teacherid | teachername
-----------+-------------
3 | Cathy
4 | Cathy
1 | Warren
5 | Bill
2 | Ben जैसा कि यह उदाहरण दर्शाता है, आपके द्वारा चुने गए विकल्प के आधार पर विभिन्न पंक्तियों को वापस किया जा सकता है।
हम EXCEPT ALL . का भी उपयोग कर सकते हैं , जो डुप्लीकेट मान लौटाता है:
SELECT TeacherId, TeacherName FROM Teachers
EXCEPT ALL
SELECT StudentId, StudentName FROM Students; परिणाम:
teacherid | teachername
-----------+-------------
3 | Cathy
4 | Cathy
1 | Warren
5 | Bill
2 | Ben यह डेटा के आधार पर समान या भिन्न परिणाम भी लौटा सकता है।