UNION
. का उपयोग करते समय मारियाडीबी में ऑपरेटर, आपको निम्न त्रुटि का सामना करना पड़ सकता है:"त्रुटि 1222 (21000):प्रयुक्त चयन कथन में कॉलम की एक अलग संख्या है"।
यह त्रुटि तब होती है जब प्रत्येक 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;
या हम पहले 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;
यह अन्य उदाहरणों के लिए भिन्न परिणाम भी लौटा सकता है।