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;