PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Behebung von „ERROR:  column „colname“ does not exist“ in PostgreSQL bei Verwendung von UNION, EXCEPT oder INTERSECT

Wenn Sie „FEHLER:Spalte „Spaltenname“ existiert nicht“ erhalten ” in PostgreSQL, wenn ein Operator wie UNION verwendet wird , EXCEPT , oder INTERSECT , kann es sein, dass Sie versuchen, eine Spalte mit Alias ​​über ihren Spaltennamen zu referenzieren.

Bei Verwendung von Operatoren wie UNION , INTERSECT , und EXCEPT , wenn eine Spalte einen Alias ​​hat, müssen Sie diesen Alias ​​in jedem ORDER BY verwenden Klausel, die auf diese Spalte verweist.

Um den Fehler zu beheben, verweisen Sie einfach auf die Spalte mit ihrem Alias.

Oder Sie könnten den Alias ​​ganz entfernen und direkt auf den Spaltennamen verweisen.

Fehlerbeispiel

Hier ist ein Codebeispiel, das den Fehler erzeugt:

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

Ergebnis:

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

Hier habe ich den Alias ​​im ORDER BY nicht verwendet Klausel, die zu dem Fehler geführt hat.

Lösung 1

Eine Möglichkeit, dieses Problem zu beheben, besteht darin, den Alias ​​in ORDER BY zu verwenden Klausel:

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

Lösung 2

Eine andere Möglichkeit besteht darin, den Alias ​​vollständig zu entfernen:

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