Ако получавате грешка „ГРЕШКА 1054 (42S22):Неизвестна колона „име на колона“ в „клауза за поръчка“ ” в MariaDB, възможно е да се опитвате да препратите колона с псевдоним по нейното име.
Това е често срещана грешка при изпълнение на заявки, които обединяват две или повече таблици. Това може да се случи и при използване на оператори като UNION
, INTERSECT
и EXCEPT
.
Като цяло, ако колона има псевдоним, тогава трябва да използвате този псевдоним във всеки ORDER BY
клауза, която препраща към тази колона.
За да поправите грешката, просто посочете колоната по нейния псевдоним.
Като алтернатива можете да премахнете изцяло псевдонима и да препратите директно името на колоната.
Пример за грешка
Ето пример за код, който създава грешката:
(SELECT TeacherName t FROM Teachers)
EXCEPT
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;
Резултат:
ERROR 1054 (42S22): Unknown column 'TeacherName' in 'order clause'
Тук не използвах псевдонима в ORDER BY
клауза, довела до грешката.
Решение 1
Един от начините да коригирате този проблем е да използвате псевдонима в ORDER BY
клауза:
(SELECT TeacherName t FROM Teachers)
EXCEPT
(SELECT StudentName FROM Students)
ORDER BY t ASC;
Резултат:
+-------+ | t | +-------+ | Ben | | Cathy | +-------+
В този случай псевдонимът става заглавка на колоната в резултата.
Решение 2
Друг начин да го направите е да премахнете изцяло псевдонима:
(SELECT TeacherName FROM Teachers)
EXCEPT
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;
Резултат:
+-------------+ | TeacherName | +-------------+ | Ben | | Cathy | +-------------+
Този път името на колоната става заглавка на колоната.