यदि आपको UNION
का उपयोग करते समय एक त्रुटि मिल रही है जिसमें लिखा है "ERROR 1250 (42000):तालिका '...' किसी एक चयन से वैश्विक ORDER खंड में उपयोग नहीं किया जा सकता है" एक MySQL क्वेरी में क्लॉज, यह शायद इसलिए है क्योंकि आप कॉलम नाम को उसके टेबल नाम के साथ अर्हता प्राप्त कर रहे हैं।
यह MySQL में काम नहीं करता है।
इस समस्या को ठीक करने के लिए, या तो तालिका का नाम हटा दें या स्तंभ उपनाम का उपयोग करें।
त्रुटि का उदाहरण
यहां कोड का एक उदाहरण दिया गया है जो त्रुटि उत्पन्न करता है:
(SELECT TeacherName FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY Teachers.TeacherName ASC;
परिणाम:
ERROR 1250 (42000): Table 'Teachers' from one of the SELECTs cannot be used in global ORDER clause
यहाँ मैंने TeacherName
. द्वारा परिणामों को क्रमित करने का प्रयास किया कॉलम, लेकिन मैंने उस कॉलम को टेबल नाम के साथ क्वालिफाई किया (मैंने Teachers.TeacherName
का इस्तेमाल किया कॉलम नाम का संदर्भ देने के लिए)।
MySQL UNION
के परिणामों को ऑर्डर करते समय तालिकाओं को इस तरह से संदर्भित करने की अनुमति नहीं देता है ऑपरेशन।
समाधान 1
इसे ठीक करने का एक तरीका ORDER BY
. से टेबल का नाम हटाना है खंड:
(SELECT TeacherName FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;
परिणाम:
+-------------+ | TeacherName | +-------------+ | Ben | | Bill | | Cathy | | Ein | | Faye | | Jet | | Spike | | Warren | +-------------+
समाधान 2
यदि पिछला विकल्प उपयुक्त नहीं है, तो समस्या को ठीक करने का दूसरा तरीका उपनाम का उपयोग करना है। दूसरे शब्दों में, कॉलम के लिए एक उपनाम निर्दिष्ट करें, फिर उस उपनाम को 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 | +--------+