Saat menggunakan INTERSECT
PostgreSQL operator, jika Anda menemukan kesalahan yang berbunyi “ERROR:setiap kueri INTERSECT harus memiliki jumlah kolom yang sama “, itu karena ada ketidakcocokan dalam jumlah kolom yang dikembalikan oleh kueri di kedua sisi INTERSECT
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
INTERSECT
SELECT StudentId, StudentName FROM Students;
Hasil:
ERROR: each INTERSECT 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
INTERSECT
SELECT StudentName FROM Students;
Hasil:
teachername ------------- Bill Warren
Opsi lainnya adalah menambahkan kolom yang relevan ke SELECT
pertama pernyataan:
SELECT TeacherId, TeacherName FROM Teachers
INTERSECT
SELECT StudentId, StudentName FROM Students;
Hasil:
teacherid | teachername -----------+------------- 6 | Bill
Seperti yang ditunjukkan oleh contoh ini, baris yang berbeda dapat ditampilkan tergantung pada opsi yang Anda pilih.
Kami juga dapat menggunakan INTERSECT ALL
, yang menyertakan nilai duplikat:
SELECT TeacherId, TeacherName FROM Teachers
INTERSECT ALL
SELECT StudentId, StudentName FROM Students;
Hasil:
teacherid | teachername -----------+------------- 6 | Bill
Ini juga dapat mengembalikan hasil yang sama atau berbeda, bergantung pada datanya.