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;