UNION
. का उपयोग करते समय PostgreSQL में ऑपरेटर, यदि आप एक त्रुटि का सामना करते हैं जिसमें लिखा है "ERROR:प्रत्येक UNION क्वेरी में समान संख्या में कॉलम होने चाहिए ", ऐसा इसलिए है क्योंकि UNION
के दोनों ओर प्रश्नों द्वारा लौटाए गए स्तंभों की संख्या में बेमेल है ऑपरेटर।
यह त्रुटि तब होती है जब प्रत्येक SELECT
. द्वारा लौटाए गए स्तंभों की संख्या बयान अलग है।
इसे ठीक करने का तरीका यह सुनिश्चित करना है कि दोनों SELECT
कथन समान संख्या में कॉलम लौटाते हैं।
त्रुटि का उदाहरण
यहां कोड का एक उदाहरण दिया गया है जो त्रुटि उत्पन्न करता है:
SELECT TeacherName FROM Teachers
UNION
SELECT StudentId, StudentName FROM Students;
परिणाम:
ERROR: each UNION 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
UNION
SELECT StudentName FROM Students;
या हम पहले SELECT
. में एक और कॉलम जोड़ सकते हैं कथन:
SELECT TeacherId, TeacherName FROM Teachers
UNION
SELECT StudentId, StudentName FROM Students;
यह ध्यान रखना महत्वपूर्ण है कि आप जो विकल्प चुनते हैं उसके आधार पर आप अलग-अलग परिणाम प्राप्त कर सकते हैं। ऐसा इसलिए है क्योंकि UNION
डिफ़ॉल्ट रूप से अलग पंक्तियाँ देता है। जब हम एक और कॉलम जोड़ते हैं, तो इस बात की संभावना होती है कि पहले की डुप्लीकेट पंक्ति अब अतिरिक्त कॉलम में मान के आधार पर एक अनूठी पंक्ति बन जाती है।
हम UNION ALL
. का भी उपयोग कर सकते हैं , जो डुप्लीकेट मान लौटाता है:
SELECT TeacherId, TeacherName FROM Teachers
UNION ALL
SELECT StudentId, StudentName FROM Students;
यह अन्य उदाहरणों के लिए भिन्न परिणाम भी लौटा सकता है।