Saat menggunakan UNION
operator di MariaDB, Anda mungkin mengalami kesalahan berikut:"ERROR 1222 (21000):Pernyataan SELECT yang digunakan memiliki jumlah kolom yang berbeda".
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 1222 (21000): The used SELECT statements have a different number of columns
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
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;
Atau kita dapat menambahkan kolom lain ke SELECT
pertama pernyataan:
SELECT TeacherId, TeacherName FROM Teachers
UNION
SELECT StudentId, StudentName FROM Students;
Ingatlah bahwa Anda bisa mendapatkan hasil yang berbeda tergantung pada opsi mana 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 pada contoh lainnya.