Se ricevi "ERRORE:la colonna "colname" non esiste" ” in PostgreSQL quando si utilizza un operatore come UNION , EXCEPT , o INTERSECT , è possibile che tu stia tentando di fare riferimento a una colonna con alias in base al nome della colonna.
Quando si utilizzano operatori come UNION , INTERSECT e EXCEPT , se una colonna ha un alias, dovrai utilizzare tale alias in qualsiasi ORDER BY clausola che fa riferimento a quella colonna.
Per correggere l'errore, fai semplicemente riferimento alla colonna con il suo alias.
Oppure puoi rimuovere del tutto l'alias e fare riferimento direttamente al nome della colonna.
Esempio di errore
Ecco un esempio di codice che produce l'errore:
(SELECT TeacherName t FROM Teachers)
EXCEPT
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC; Risultato:
ERROR: column "teachername" does not exist LINE 4: ORDER BY TeacherName ASC;
Qui non ho usato l'alias in ORDER BY clausola che ha provocato l'errore.
Soluzione 1
Un modo per risolvere questo problema è utilizzare l'alias in ORDER BY clausola:
(SELECT TeacherName t FROM Teachers)
EXCEPT
(SELECT StudentName FROM Students)
ORDER BY t ASC; Soluzione 2
Un'altra opzione è rimuovere del tutto l'alias:
(SELECT TeacherName FROM Teachers)
EXCEPT
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;