Saat menggunakan UNION
operator di PostgreSQL, jika Anda menemukan kesalahan yang berbunyi “ERROR:setiap kueri UNION harus memiliki jumlah kolom yang sama “, itu karena ada ketidakcocokan dalam jumlah kolom yang dikembalikan oleh kueri di kedua sisi UNION
operator.
Kesalahan ini terjadi ketika jumlah kolom yang dikembalikan oleh setiap SELECT
pernyataannya berbeda.
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
UNION
SELECT StudentId, StudentName FROM Students;
Hasil:
ERROR: each UNION 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
UNION
SELECT StudentName FROM Students;
Atau kita dapat menambahkan kolom lain ke SELECT
pertama pernyataan:
SELECT TeacherId, TeacherName FROM Teachers
UNION
SELECT StudentId, StudentName FROM Students;
Penting untuk dicatat bahwa Anda bisa mendapatkan hasil yang berbeda tergantung pada opsi yang Anda pilih. Ini karena UNION
mengembalikan baris yang berbeda secara default. Saat kita menambahkan kolom lain, ada kemungkinan baris yang sebelumnya duplikat sekarang menjadi baris yang unik, tergantung pada nilai di kolom tambahan.
Kami juga dapat menggunakan UNION ALL
, yang mengembalikan nilai duplikat:
SELECT TeacherId, TeacherName FROM Teachers
UNION ALL
SELECT StudentId, StudentName FROM Students;
Ini juga dapat mengembalikan hasil yang berbeda ke contoh lainnya.