Ако получавате грешка, която гласи „ГРЕШКА 1250 (42000):Таблица „...“ от един от SELECT не може да се използва в глобалната клауза ORDER“, когато използвате UNION
клауза в MySQL заявка, вероятно е защото квалифицирате име на колона с името на нейната таблица.
Това не работи в MySQL.
За да коригирате този проблем, или премахнете името на таблицата, или използвайте псевдоним на колона.
Пример за грешка
Ето пример за код, който създава грешката:
(SELECT TeacherName FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY Teachers.TeacherName ASC;
Резултат:
ГРЕШКА 1250 (42000):Таблица „Учители“ от един от SELECT не може да се използва в глобалната клауза ORDER
Тук се опитах да подредя резултатите по TeacherName
колона, но квалифицирах тази колона с името на таблицата (използвах Teachers.TeacherName
за справка с името на колоната).
MySQL не позволява таблици да се препращат по този начин при поръчване на резултатите от UNION
операция.
Решение 1
Един от начините да поправите това е да премахнете името на таблицата от ORDER BY
клауза:
(SELECT TeacherName FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;
Резултат:
+------------+| Име на учителя |+------------+| Бен || Бил || Кати || Ein || Фей || Реактивен || Спайк || Уорън |+------------+
Решение 2
Ако предишната опция не е подходяща, друг начин за отстраняване на проблема е да използвате псевдоним. С други думи, задайте псевдоним на колоната, след което препратете към този псевдоним в ORDER BY
клауза:
(SELECT TeacherName t FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY t ASC;
Резултат:
<пред>+--------+| t |+--------+| Бен || Бил || Кати || Ein || Фей || Реактивен || Спайк || Уорън |+--------+