Mysql
 sql >> база данни >  >> RDS >> Mysql

Поправете „ГРЕШКА 1250 (42000):Таблица „...“ от един от SELECT не може да се използва в глобалната клауза ORDER“, когато използвате UNION в MySQL

Ако получавате грешка, която гласи „ГРЕШКА 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 || Фей || Реактивен || Спайк || Уорън |+--------+
  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да импортирате MySQL бази данни в командния ред

  2. COUNT(*) винаги ли връща резултат?

  3. Как да промените Root парола на MySQL или MariaDB в Linux

  4. Създайте нов потребител в MySQL и му дайте пълен достъп до една база данни

  5. Защита на вашата MySQL инсталация