Als u "ERROR:kolom "colname" bestaat niet' . krijgt ” in PostgreSQL bij gebruik van een operator zoals UNION
, EXCEPT
, of INTERSECT
, kan het zijn dat u probeert te verwijzen naar een gealiaste kolom met de kolomnaam.
Bij gebruik van operators zoals UNION
, INTERSECT
, en EXCEPT
, als een kolom een alias heeft, moet u die alias gebruiken in een ORDER BY
clausule die naar die kolom verwijst.
Om de fout op te lossen, verwijst u eenvoudig naar de kolom met zijn alias.
Of u kunt de alias helemaal verwijderen en rechtstreeks naar de kolomnaam verwijzen.
Voorbeeld van fout
Hier is een voorbeeld van code die de fout veroorzaakt:
(SELECT TeacherName t FROM Teachers)
EXCEPT
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;
Resultaat:
ERROR: column "teachername" does not exist LINE 4: ORDER BY TeacherName ASC;
Hier heb ik de alias niet gebruikt in de ORDER BY
clausule die in de fout resulteerde.
Oplossing 1
Een manier om dit probleem op te lossen is door de alias te gebruiken in de ORDER BY
clausule:
(SELECT TeacherName t FROM Teachers)
EXCEPT
(SELECT StudentName FROM Students)
ORDER BY t ASC;
Oplossing 2
Een andere optie is om de alias helemaal te verwijderen:
(SELECT TeacherName FROM Teachers)
EXCEPT
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;