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;