अगर आपको "ERROR 1222 (21000) मिल रहा है:UNION
का इस्तेमाल करते समय इस्तेमाल किए गए SELECT स्टेटमेंट में कॉलम की संख्या अलग-अलग होती है" एक MySQL क्वेरी में क्लॉज, यह शायद इसलिए है क्योंकि प्रत्येक SELECT
. द्वारा लौटाए गए कॉलम की संख्या बयान अलग है।
उदाहरण के लिए, पहला SELECT
स्टेटमेंट दो कॉलम लौटा सकता है, लेकिन दूसरा SELECT
स्टेटमेंट तीन लौटाता है।
इस समस्या को ठीक करने के लिए, सुनिश्चित करें कि दोनों SELECT
कथन समान संख्या में कॉलम लौटाते हैं।
त्रुटि का उदाहरण
यहां कोड का एक उदाहरण दिया गया है जो त्रुटि उत्पन्न करता है:
SELECT TeacherName FROM Teachers
UNION
SELECT StudentId, StudentName FROM Students;
परिणाम:
ERROR 1222 (21000): The used SELECT statements have a different number of columns
यहां, पहला SELECT
स्टेटमेंट एक कॉलम लौटाता है (TeacherName
), लेकिन दूसरा SELECT
स्टेटमेंट दो कॉलम लौटाता है (StudentId
और StudentName
)।
समाधान
इस समस्या को ठीक करने का तरीका यह सुनिश्चित करना है कि दोनों SELECT
कथन समान संख्या में कॉलम लौटाते हैं
तो उपरोक्त उदाहरण का उपयोग करके, हम या तो हमारे दूसरे SELECT
. से अतिरिक्त कॉलम को हटा सकते हैं कथन:
SELECT TeacherName FROM Teachers
UNION
SELECT StudentName FROM Students;
परिणाम:
+-------------+ | TeacherName | +-------------+ | Warren | | Ben | | Cathy | | Bill | | Faye | | Jet | | Spike | | Ein | +-------------+
या हम पहले SELECT
. में एक और कॉलम जोड़ सकते हैं कथन:
SELECT TeacherId, TeacherName FROM Teachers
UNION
SELECT StudentId, StudentName FROM Students;
परिणाम:
+-----------+-------------+ | TeacherId | TeacherName | +-----------+-------------+ | 1 | Warren | | 2 | Ben | | 3 | Cathy | | 4 | Cathy | | 5 | Bill | | 6 | Bill | | 1 | Faye | | 2 | Jet | | 3 | Spike | | 4 | Ein | | 5 | Warren | +-----------+-------------+
ध्यान रखें कि आप जो विकल्प चुनते हैं उसके आधार पर आपको अलग-अलग परिणाम मिल सकते हैं। ऐसा इसलिए है क्योंकि UNION
डिफ़ॉल्ट रूप से अलग पंक्तियाँ देता है। जब हम एक और कॉलम जोड़ते हैं, तो इस बात की संभावना होती है कि पहले की डुप्लीकेट पंक्ति अब एक अद्वितीय पंक्ति बन जाए, जो अतिरिक्त कॉलम में मान पर निर्भर करती है।
हम UNION ALL
. का भी उपयोग कर सकते हैं , जो डुप्लीकेट मान लौटाता है:
SELECT TeacherId, TeacherName FROM Teachers
UNION ALL
SELECT StudentId, StudentName FROM Students;
परिणाम:
+-----------+-------------+ | TeacherId | TeacherName | +-----------+-------------+ | 1 | Warren | | 2 | Ben | | 3 | Cathy | | 4 | Cathy | | 5 | Bill | | 6 | Bill | | 1 | Faye | | 2 | Jet | | 3 | Spike | | 4 | Ein | | 5 | Warren | | 6 | Bill | +-----------+-------------+