sql >> Database >  >> RDS >> PostgreSQL

Fix 'ERROR:kolom "colname" bestaat niet' in PostgreSQL bij gebruik van UNION, BEHALVE of INTERSECT

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;

  1. 5 manieren om rijen met kleine letters te retourneren in SQL Server

  2. Active Data Guard Physical Standby instellen in RAC One Node Architecture - Deel 1

  3. Overstappen van MySQL 5.7 naar MySQL 8.0 - Wat u moet weten

  4. Database-e-mail instellen in SQL Server (SSMS)