sql >> Databáze >  >> RDS >> PostgreSQL

Oprava „ERROR:  sloupec „colname“ neexistuje“ v PostgreSQL při použití UNION, EXCEPT nebo INTERSECT

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;

  1. Existuje schopnost ANY_VALUE pro mysql 5.6?

  2. Automatické zvýšení na částečném primárním klíči s Entity Framework Core

  3. Humanizované nebo přirozené třídění smíšených slovních a číselných řetězců

  4. Jak nainstalovat a nakonfigurovat Zabbix na Ubuntu 20.04