PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Napraw „BŁĄD:kolumna „colname” nie istnieje” w PostgreSQL podczas korzystania z UNION, EXCEPT lub INTERSECT

Jeśli otrzymujesz komunikat „BŁĄD:kolumna „nazwa kolumny” nie istnieje” ” w PostgreSQL podczas używania operatora takiego jak UNION , EXCEPT lub INTERSECT , być może próbujesz odwołać się do kolumny z aliasem według jej nazwy.

Używając operatorów takich jak UNION , INTERSECT i EXCEPT , jeśli kolumna ma alias, musisz użyć tego aliasu w dowolnym ORDER BY klauzula odwołująca się do tej kolumny.

Aby naprawić błąd, po prostu odwołaj się do kolumny za pomocą jej aliasu.

Możesz też całkowicie usunąć alias i odnieść się bezpośrednio do nazwy kolumny.

Przykład błędu

Oto przykład kodu, który generuje błąd:

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

Wynik:

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

Tutaj nie użyłem aliasu w ORDER BY klauzula, która spowodowała błąd.

Rozwiązanie 1

Jednym ze sposobów rozwiązania tego problemu jest użycie aliasu w ORDER BY klauzula:

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

Rozwiązanie 2

Inną opcją jest całkowite usunięcie aliasu:

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak mogę zaimportować dane z ASCII (ISO/IEC 8859-1) do mojej bazy danych Rails/PGSQL?

  2. Jak przetestować mój ad-hoc SQL z parametrami w oknie zapytania Postgres

  3. Jak przekonwertować ciąg na datę w PostgreSQL

  4. Mówienie użytkownikom, aby sami się rozwidlili

  5. Wnętrzności PostgreSQL:Co to jest „resjunk”?