Ако получавате „ГРЕШКА 1250 (42000):Таблица „...“ от един от SELECT не може да се използва в клауза ORDER“, това вероятно е защото квалифицирате име на колона с името на нейната таблица, когато използвате оператор като UNION
, INTERSECT
, или EXCEPT
в MariaDB.
За да коригирате това, или премахнете името на таблицата, или използвайте псевдоним на колона.
Пример за грешка
Ето пример за код, който създава грешката:
(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
клауза.