Jika Anda mendapatkan “Kesalahan:dalam persiapan, SELECT di kiri dan kanan UNION tidak memiliki jumlah kolom hasil yang sama…” saat mencoba menggunakan UNION
operator di SQLite, itu karena salah satu dari SELECT
pernyataan mengembalikan lebih banyak kolom daripada yang lain.
Saat Anda menggunakan UNION
operator, keduanya SELECT
pernyataan harus mengembalikan jumlah kolom yang sama.
Untuk memperbaiki masalah ini, pastikan SELECT
pernyataan mengembalikan jumlah kolom yang sama.
Contoh Kesalahan
Berikut ini contoh kode SQL yang menghasilkan kesalahan:
SELECT TeacherName FROM Teachers
UNION
SELECT StudentId, StudentName FROM Students;
Hasil:
Kesalahan:dalam persiapan, SELECT di kiri dan kanan UNION tidak memiliki jumlah kolom hasil yang sama (1)
Di sini, SELECT
first pertama pernyataan mengembalikan satu kolom (TeacherName
), tetapi SELECT
second kedua pernyataan mengembalikan dua kolom (StudentId
dan StudentName
).
Solusi
Cara untuk memperbaiki masalah ini adalah memastikan keduanya SELECT
pernyataan mengembalikan jumlah kolom yang sama
Jadi dengan menggunakan contoh di atas, kita dapat menghapus kolom tambahan dari SELECT
. kedua kita pernyataan:
SELECT TeacherName FROM Teachers
UNION
SELECT StudentName FROM Students;
Hasil:
TeacherName------------Ben Bill Cathy Ein Faye Jet Spike Warren
Atau kita dapat menambahkan kolom lain ke SELECT
pertama pernyataan:
SELECT TeacherId, TeacherName FROM Teachers
UNION
SELECT StudentId, StudentName FROM Students;
Hasil:
TeacherId TeacherName--------- -----------1 Faye 1 Warren 2 Ben 2 Jet 3 Cathy 3 Spike 4 Cathy 4 Ein 5 Bill 5 Warren 6 Bill
Ingatlah 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;
Hasil:
TeacherId TeacherName--------- -----------1 Warren 2 Ben 3 Cathy 4 Cathy 5 Bill 6 Bill 1 Faye 2 Jet 3 Spike 4 Ein 5 Warren 6 Bill