Ако получавате „ГРЕШКА:колона „име на колона“ не съществува“ ” в PostgreSQL, когато използвате оператор като UNION
, EXCEPT
, или INTERSECT
, възможно е да се опитвате да препратите колона с псевдоним по нейното име.
Когато използвате оператори като UNION
, INTERSECT
и EXCEPT
, ако колона има псевдоним, тогава ще трябва да използвате този псевдоним във всеки ORDER BY
клауза, която препраща към тази колона.
За да поправите грешката, просто посочете колоната по нейния псевдоним.
Или можете да премахнете изцяло псевдонима и да препратите директно към името на колоната.
Пример за грешка
Ето пример за код, който създава грешката:
(SELECT TeacherName t FROM Teachers)
EXCEPT
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;
Резултат:
ERROR: column "teachername" does not exist LINE 4: ORDER BY TeacherName ASC;
Тук не използвах псевдонима в ORDER BY
клауза, довела до грешката.
Решение 1
Един от начините да коригирате този проблем е да използвате псевдонима в ORDER BY
клауза:
(SELECT TeacherName t FROM Teachers)
EXCEPT
(SELECT StudentName FROM Students)
ORDER BY t ASC;
Решение 2
Друга възможност е да премахнете изцяло псевдонима:
(SELECT TeacherName FROM Teachers)
EXCEPT
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;