यदि आपको UNION
का उपयोग करने का प्रयास करते समय "त्रुटि:तैयारी में, UNION के बाएँ और दाएँ चयन में परिणाम स्तंभों की संख्या समान नहीं है..." मिल रही है SQLite में ऑपरेटर, ऐसा इसलिए है क्योंकि SELECT
. में से एक कथन दूसरे की तुलना में अधिक कॉलम लौटा रहा है।
जब आप UNION
. का उपयोग करते हैं ऑपरेटर, दोनों SELECT
कथनों को समान संख्या में कॉलम लौटाने चाहिए।
इस समस्या को ठीक करने के लिए, सुनिश्चित करें कि SELECT
कथन समान संख्या में कॉलम लौटाते हैं।
त्रुटि का उदाहरण
यहां त्रुटि उत्पन्न करने वाले SQL कोड का एक उदाहरण दिया गया है:
SELECT TeacherName FROM Teachers
UNION
SELECT StudentId, StudentName FROM Students;
परिणाम:
Error: in prepare, SELECTs to the left and right of UNION do not have the same number of result columns (1)
यहां, पहला SELECT
स्टेटमेंट एक कॉलम लौटाता है (TeacherName
), लेकिन दूसरा SELECT
स्टेटमेंट दो कॉलम लौटाता है (StudentId
और StudentName
)।
समाधान
इस समस्या को ठीक करने का तरीका यह सुनिश्चित करना है कि दोनों SELECT
कथन समान संख्या में कॉलम लौटाते हैं
तो उपरोक्त उदाहरण का उपयोग करके, हम या तो हमारे दूसरे SELECT
. से अतिरिक्त कॉलम को हटा सकते हैं कथन:
SELECT TeacherName FROM Teachers
UNION
SELECT StudentName FROM Students;
परिणाम:
TeacherName ----------- Ben Bill Cathy Ein Faye Jet Spike Warren
या हम पहले SELECT
. में एक और कॉलम जोड़ सकते हैं कथन:
SELECT TeacherId, TeacherName FROM Teachers
UNION
SELECT StudentId, StudentName FROM Students;
परिणाम:
TeacherId TeacherName --------- ----------- 1 Faye 1 Warren 2 Ben 2 Jet 3 Cathy 3 Spike 4 Cathy 4 Ein 5 Bill 5 Warren 6 Bill
ध्यान रखें कि आप जो विकल्प चुनते हैं उसके आधार पर आप अलग-अलग परिणाम प्राप्त कर सकते हैं। ऐसा इसलिए है क्योंकि 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