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

MySQL में UNION का उपयोग करते समय "ERROR 1222 (21000) को ठीक करें:उपयोग किए गए SELECT स्टेटमेंट में कॉलम की एक अलग संख्या होती है"

अगर आपको "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        |
+-----------+-------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL इंडेक्स कैसे काम करते हैं?

  2. MySQL में केस सेंसिटिव की तरह

  3. MySQL में OCTET_LENGTH () फ़ंक्शन कैसे काम करता है

  4. MySQL में रैंडम पंक्तियों का चयन करना

  5. मैं ठीक से केस का उपयोग कैसे करूं..जब MySQL में