PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Perbaiki 'ERROR:  kolom "colname" tidak ada' di PostgreSQL saat menggunakan UNION, KECUALI, atau INTERSECT

Jika Anda mendapatkan “ERROR:kolom “colname” tidak ada' ” di PostgreSQL saat menggunakan operator seperti UNION , EXCEPT , atau INTERSECT , mungkin Anda mencoba mereferensikan kolom alias dengan nama kolomnya.

Saat menggunakan operator seperti UNION , INTERSECT , dan EXCEPT , jika kolom memiliki alias, Anda harus menggunakan alias itu di ORDER BY apa pun klausa yang mereferensikan kolom itu.

Untuk memperbaiki kesalahan, cukup rujuk kolom dengan aliasnya.

Atau Anda dapat menghapus alias sama sekali dan merujuk nama kolom secara langsung.

Contoh Kesalahan

Berikut contoh kode yang menghasilkan kesalahan:

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

Hasil:

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

Disini saya tidak menggunakan alias di ORDER BY klausa yang mengakibatkan kesalahan.

Solusi 1

Salah satu cara untuk memperbaiki masalah ini adalah dengan menggunakan alias di ORDER BY klausa:

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

Solusi 2

Pilihan lain adalah menghapus alias sama sekali:

(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. KONSTRAINT UNIK Postgres untuk array

  2. Buku "PostgreSQL 9.0 High Performance" sudah keluar

  3. Apa yang baru di PostgreSQL 13?

  4. Koneksi Postgres telah ditutup kesalahan di Spring Boot

  5. Instalasi PostgresSQL gagal:inisialisasi klaster basis data gagal os MAC