PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Correction de "ERREUR :la colonne "colname" n'existe pas" dans PostgreSQL lors de l'utilisation de UNION, EXCEPT ou INTERSECT

Si vous obtenez "ERREUR :la colonne "colname" n'existe pas" ” dans PostgreSQL lors de l'utilisation d'un opérateur tel que UNION , EXCEPT , ou INTERSECT , il se peut que vous essayiez de référencer une colonne avec un alias par son nom de colonne.

Lors de l'utilisation d'opérateurs tels que UNION , INTERSECT , et EXCEPT , si une colonne a un alias, vous devrez utiliser cet alias dans n'importe quel ORDER BY clause qui fait référence à cette colonne.

Pour corriger l'erreur, référencez simplement la colonne par son alias.

Ou vous pouvez supprimer complètement l'alias et référencer directement le nom de la colonne.

Exemple d'erreur

Voici un exemple de code qui génère l'erreur :

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

Résultat :

ERROR:  column "teachername" does not exist
LINE 4: ORDER BY TeacherName ASC;

Ici, je n'ai pas utilisé l'alias dans le ORDER BY clause qui a entraîné l'erreur.

Solution 1

Une façon de résoudre ce problème consiste à utiliser l'alias dans le ORDER BY clause :

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

Solution 2

Une autre option consiste à supprimer complètement l'alias :

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