Saat menggunakan EXCEPT
PostgreSQL operator, jika Anda menemukan kesalahan yang berbunyi “ERROR:setiap kueri KECUALI harus memiliki jumlah kolom yang sama “, itu karena ada ketidakcocokan dalam jumlah kolom yang dikembalikan oleh kueri di kedua sisi EXCEPT
operator.
Cara untuk memperbaikinya adalah dengan memastikan bahwa keduanya SELECT
pernyataan mengembalikan jumlah kolom yang sama.
Contoh Kesalahan
Berikut contoh kode yang menghasilkan kesalahan:
SELECT TeacherName FROM Teachers
EXCEPT
SELECT StudentId, StudentName FROM Students;
Hasil:
ERROR: each EXCEPT query must have the same number of columns LINE 3: SELECT StudentId, StudentName FROM Students;
Di sini, SELECT
first pertama pernyataan mengembalikan satu kolom (TeacherName
), tetapi SELECT
second kedua pernyataan mengembalikan dua kolom (StudentId
dan StudentName
).
Solusi
Solusinya adalah memastikan keduanya SELECT
pernyataan mengembalikan jumlah kolom yang sama
Dengan menggunakan contoh di atas, kita dapat menghapus kolom tambahan dari SELECT
. kedua kita pernyataan:
SELECT TeacherName FROM Teachers
EXCEPT
SELECT StudentName FROM Students;
Hasil:
teachername ------------- Cathy Ben
Opsi lainnya adalah menambahkan kolom yang relevan ke SELECT
pertama pernyataan:
SELECT TeacherId, TeacherName FROM Teachers
EXCEPT
SELECT StudentId, StudentName FROM Students;
Hasil:
teacherid | teachername -----------+------------- 3 | Cathy 4 | Cathy 1 | Warren 5 | Bill 2 | Ben
Seperti yang ditunjukkan oleh contoh ini, baris yang berbeda dapat ditampilkan tergantung pada opsi yang Anda pilih.
Kami juga dapat menggunakan EXCEPT ALL
, yang mengembalikan nilai duplikat:
SELECT TeacherId, TeacherName FROM Teachers
EXCEPT ALL
SELECT StudentId, StudentName FROM Students;
Hasil:
teacherid | teachername -----------+------------- 3 | Cathy 4 | Cathy 1 | Warren 5 | Bill 2 | Ben
Ini juga dapat mengembalikan hasil yang sama atau berbeda, bergantung pada datanya.