यदि आपको "ERROR 1250 (42000):तालिका '...' किसी एक चयन से ORDER खंड में उपयोग नहीं किया जा सकता है, तो यह शायद इसलिए है क्योंकि आप एक ऑपरेटर का उपयोग करते समय उसके तालिका नाम के साथ कॉलम नाम को अर्हता प्राप्त कर रहे हैं जैसे UNION
, INTERSECT
, या EXCEPT
मारियाडीबी में।
इसे ठीक करने के लिए, या तो तालिका का नाम हटा दें या स्तंभ उपनाम का उपयोग करें।
त्रुटि का उदाहरण
यहां कोड का एक उदाहरण दिया गया है जो त्रुटि उत्पन्न करता है:
(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 ORDER clause
इस मामले में मैंने TeacherName
. द्वारा परिणामों को क्रमित करने का प्रयास किया कॉलम, लेकिन मैंने उस कॉलम को टेबल नाम के साथ क्वालिफाई किया (मैंने Teachers.TeacherName
का इस्तेमाल किया कॉलम नाम का संदर्भ देने के लिए)।
UNION
. के परिणामों का आदेश देते समय इस तरह की संदर्भ तालिका काम नहीं करती है MariaDB में ऑपरेशन INTERSECT
. के परिणाम ऑर्डर करते समय भी यही बात लागू होती है ऑपरेटर और EXCEPT
ऑपरेटर।
समाधान 1
इस समस्या को ठीक करने का एक तरीका ORDER BY
. से तालिका का नाम हटाना है खंड:
(SELECT TeacherName FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;
समाधान 2
इसे ठीक करने का दूसरा तरीका कॉलम के लिए एक उपनाम का उपयोग करना है:
(SELECT TeacherName t FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY t ASC;
इस विकल्प के साथ, हम कॉलम के लिए एक उपनाम निर्दिष्ट करते हैं, और फिर उस उपनाम को ORDER BY
में संदर्भित करते हैं खंड।