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

Поправете „ГРЕШКА 1054 (42S22):Неизвестна колона „…“ в „клауза за поръчка“, когато използвате UNION в MySQL

Ако получавате грешка „1054 (42S22):Неизвестна колона „…“ в „клауза за поръчка““, когато използвате UNION клауза в MySQL, това може да е защото се опитвате да препратите колона с псевдоним по нейното име на колона.

Когато използвате UNION клауза в MySQL, ако колона има псевдоним, тогава трябва да използвате този псевдоним във всеки ORDER BY клауза, която препраща към тази колона.

Така че, за да коригирате грешката, не забравяйте да препратите колоната по нейния псевдоним. Като алтернатива можете да премахнете псевдонима и да препратите директно към името на колоната.

Пример за грешка

Ето пример за код, който създава грешката:

(SELECT TeacherName t FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;

Резултат:

ERROR 1054 (42S22): Unknown column 'TeacherName' in 'order clause'

Тук се опитах да подредя резултатите по TeacherName колона, но тази колона има псевдоним. Фактът, че не използвах псевдонима в ORDER BY клаузата беше достатъчна, за да доведе до грешката.

Решение 1

Един от начините да коригирате този проблем е да използвате псевдонима в 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 |
+--------+

Това реши проблема.

Решение 2

Друг начин да го направите е да премахнете изцяло псевдонима:

(SELECT TeacherName FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;

Резултат:

+-------------+
| TeacherName |
+-------------+
| Ben         |
| Bill        |
| Cathy       |
| Ein         |
| Faye        |
| Jet         |
| Spike       |
| Warren      |
+-------------+

  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. MySQL преобразува изхода timediff във формат ден, час, минута, секунда

  3. Получаване на новия идентификатор на първичен ключ на запис от MySQL заявка за вмъкване?

  4. Как да съхранявате Java Date в Mysql datetime с JPA

  5. Невалиден тип синтактична грешка=MyISAM в DDL, генериран от Hibernate