यदि आपको UNION
का उपयोग करते समय त्रुटि "1054 (42S22):'ऑर्डर क्लॉज' में अज्ञात कॉलम '...'" मिल रही है MySQL में क्लॉज, ऐसा इसलिए हो सकता है क्योंकि आप किसी अलियास्ड कॉलम को उसके कॉलम नाम से संदर्भित करने का प्रयास कर रहे हैं।
UNION
. का उपयोग करते समय MySQL में क्लॉज, यदि किसी कॉलम में उपनाम है, तो आपको उस उपनाम का उपयोग किसी भी ORDER BY
में करना होगा खंड जो उस कॉलम को संदर्भित करता है।
तो त्रुटि को ठीक करने के लिए, कॉलम को उसके उपनाम से संदर्भित करना सुनिश्चित करें। वैकल्पिक रूप से, आप उपनाम को हटा सकते हैं और सीधे कॉलम नाम का संदर्भ दे सकते हैं।
त्रुटि का उदाहरण
यहां कोड का एक उदाहरण दिया गया है जो त्रुटि उत्पन्न करता है:
(SELECT TeacherName FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;
परिणाम:
ERROR 1054 (42S22): Unknown column 'TeacherName' in 'order clause'
यहाँ मैंने TeacherName
. द्वारा परिणामों को क्रमित करने का प्रयास किया कॉलम, लेकिन उस कॉलम में उपनाम है। तथ्य यह है कि मैंने ORDER BY
. में उपनाम का उपयोग नहीं किया है खंड त्रुटि उत्पन्न करने के लिए पर्याप्त था।
समाधान 1
इस समस्या को ठीक करने का एक तरीका ORDER BY
. में उपनाम का उपयोग करना है खंड:
(SELECT TeacherName t FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY t ASC;
परिणाम:
+--------+ | t | +--------+ | Ben | | Bill | | Cathy | | Ein | | Faye | | Jet | | Spike | | Warren | +--------+
इससे समस्या हल हो गई।
समाधान 2
ऐसा करने का एक और तरीका है कि उपनाम को पूरी तरह से हटा दिया जाए:
(SELECT TeacherName FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;
परिणाम:
+-------------+ | TeacherName | +-------------+ | Ben | | Bill | | Cathy | | Ein | | Faye | | Jet | | Spike | | Warren | +-------------+