Union bekerja berdasarkan kolom posisi BUKAN nama. Tetapi Anda belum menentukan posisi kolom karena Anda melakukan *
jadi ada dalam urutan tertentu yang dipilih oleh database, tetapi tidak dipilih oleh Anda.
Nama kumpulan hasil akhir adalah nama kolom dalam kueri pertama dalam gabungan.
Cara mengatasinya mudah:Tulis nama semua kolom yang Anda inginkan, dan pastikan urutannya konsisten di antara ketiga kueri.
Kolom TIDAK diurutkan berdasarkan nama (jadi mengganti nama kolom tidak akan membantu Anda), urutannya adalah beberapa urutan internal dalam database.
Menggunakan *
dianggap praktik yang buruk:Anda tidak tahu apa yang Anda dapatkan, dan jika Anda hanya membutuhkan beberapa kolom maka gunakan *
mengambil lebih banyak data dari yang diperlukan, membuat segalanya lebih lambat.
BTW Kolom penamaan seperti ini (berdasarkan angka) adalah praktik pemrograman yang sangat buruk. Bagaimana di dunia Anda menjaga hal-hal lurus? Kolom Anda memiliki angka, tabel Anda memiliki angka. Apakah Anda mencoba menulis kode yang dikaburkan? Untuk memastikan tidak ada orang lain yang dapat mengerjakan kode Anda? Karena jika ya, ini adalah salah satu cara untuk melakukannya.