Pokud se vám zobrazuje „CHYBA:sloupec „colname“ neexistuje“ ” v PostgreSQL při použití operátoru, jako je UNION , EXCEPT nebo INTERSECT , může se stát, že se pokoušíte odkazovat na aliasový sloupec jeho názvem.
Při použití operátorů, jako je UNION , INTERSECT a EXCEPT , pokud má sloupec alias, musíte tento alias použít v každém ORDER BY klauzule, která na tento sloupec odkazuje.
Chcete-li chybu opravit, jednoduše odkazujte na sloupec jeho aliasem.
Nebo můžete alias úplně odstranit a odkazovat přímo na název sloupce.
Příklad chyby
Zde je příklad kódu, který způsobuje chybu:
(SELECT TeacherName t FROM Teachers)
EXCEPT
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC; Výsledek:
ERROR: column "teachername" does not exist LINE 4: ORDER BY TeacherName ASC;
Zde jsem nepoužil alias v ORDER BY klauzule, která vedla k chybě.
Řešení 1
Jedním ze způsobů, jak tento problém vyřešit, je použít alias v ORDER BY klauzule:
(SELECT TeacherName t FROM Teachers)
EXCEPT
(SELECT StudentName FROM Students)
ORDER BY t ASC; Řešení 2
Další možností je odstranit alias úplně:
(SELECT TeacherName FROM Teachers)
EXCEPT
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;