UNION & UNION ALL: Menumpuk Hasil Beberapa Query

Menggabungkan hasil beberapa SELECT menjadi satu daftar panjang dengan UNION dan UNION ALL, aturan kolom yang harus sama, dan perbedaannya dengan JOIN.

Part 29 dari 38 ± 30 menit Gratis

JOIN menyamping, UNION menumpuk

JOIN menambah kolom (menyambung ke samping). UNION menambah baris (menumpuk ke bawah). Gunanya: menyatukan daftar sejenis yang tersimpan terpisah.

Contoh: KopiKita ingin kirim undangan ke semua orang: pelanggan dan karyawan. Datanya ada di dua tabel berbeda.

SELECT nama, 'Pelanggan' AS peran FROM pelanggan
UNION
SELECT nama, 'Karyawan'  AS peran FROM karyawan
ORDER BY nama;
+-----------------+-----------+
| nama            | peran     |
+-----------------+-----------+
| Andi Pratama    | Pelanggan |
| Bagas Prakoso   | Karyawan  |
| Budi Santoso    | Pelanggan |
| Citra Dewi      | Karyawan  |
...

Aturan UNION

  • Setiap SELECT harus punya jumlah kolom yang sama.
  • Kolom pada posisi yang sama harus bertipe serasi (teks dengan teks, angka dengan angka).
  • Nama kolom hasil diambil dari SELECT pertama.
  • ORDER BY dan LIMIT ditulis sekali di paling akhir dan berlaku untuk keseluruhan hasil.

UNION vs UNION ALL

UNIONUNION ALL
Baris kembarDibuang (otomatis DISTINCT)Dipertahankan
KecepatanLebih lambat (harus mencari duplikat)Lebih cepat
Pilih saatButuh daftar unikYakin tidak ada duplikat, atau duplikat memang diinginkan
SELECT kota FROM pelanggan
UNION
SELECT 'Jakarta';          -- Jakarta tidak ditambah lagi, sudah ada

SELECT kota FROM pelanggan
UNION ALL
SELECT 'Jakarta';          -- Jakarta ditambah sebagai baris baru (duplikat)

Kebiasaan baik: kalau kamu yakin datanya tidak mungkin kembar, tulis UNION ALL. Hasil sama, tapi MySQL tidak perlu repot menyaring duplikat.

Kapan UNION berguna?

  • Laporan gabungan beberapa sumber (penjualan online + toko fisik).
  • Menambahkan baris total di bawah laporan.
  • Arsip + tabel aktif: SELECT * FROM pesanan UNION ALL SELECT * FROM pesanan_arsip.
  • Menyimulasikan FULL OUTER JOIN (yang tak ada di MySQL): LEFT JOIN ... UNION ... RIGHT JOIN ....

Praktikkan langsung, gratis

Tulis dan jalankan kode langsung di browser, dapatkan penilaian otomatis. Daftar gratis kapan saja untuk menyimpan progres dan meraih sertifikat.

Coba latihan sekarang, tanpa daftar
Bagikan: WhatsApp Facebook LinkedIn X