MySQL UNION – Tutorial Lengkap

⚡ Ringkasan Cerdas

MySQL UNION menggabungkan hasil dari dua atau lebih kueri SELECT menjadi satu set hasil gabungan. Penjelasan ini mencakup aturan kolom yang membuat UNION valid, perbedaan antara UNION DISTINCT dan UNION ALL, serta contoh yang dijalankan pada basis data myflixdb.

  • 🔗 Tujuan Inti: UNION menggabungkan baris yang dikembalikan oleh beberapa kueri SELECT ke dalam satu set hasil tunggal, satu kueri di bawah kueri lainnya.
  • 📐 Aturan Kolom: Setiap pernyataan SELECT harus mengembalikan jumlah kolom yang sama, dalam urutan yang sama, dengan tipe data yang kompatibel.
  • 🧹 UNION DISTINCT: Baris duplikat dihapus dan hanya baris unik yang dikembalikan, dan inilah perilakunya. MySQL berlaku secara default.
  • 📚 BERSATU SEMUA: Semua baris dikembalikan, termasuk duplikatnya, yang lebih cepat karena tidak diperlukan proses penghapusan duplikat.
  • Nama Kolom: Hasil kueri mengambil nama kolom dari pernyataan SELECT pertama, jadi alias harus ada dalam kueri tersebut.
  • Penggunaan Khas: Menggabungkan dua tabel yang menyimpan jenis data yang sama, tanpa mengizinkan baris duplikat masuk ke dalam output gabungan.

MySQL PERSATUAN Operator

Apa itu SERIKAT PEKERJA? MySQL?

PERSATUAN adalah MySQL Operator yang menggabungkan hasil dari beberapa kueri SELECT menjadi satu set hasil gabungan. Baris yang dikembalikan oleh kueri kedua ditempatkan di bawah baris yang dikembalikan oleh kueri pertama, yang menghasilkan satu daftar vertikal alih-alih dua daftar terpisah.

Satu-satunya syarat agar ini berfungsi adalah jumlah kolom harus sama dari semua kueri SELECT yang perlu digabungkan.

Misalkan kita memiliki dua tabel sebagai berikut.

MySQL PERSATUANMySQL PERSATUAN

Kedua tabel tersebut memiliki dua kolom dengan tipe yang sama, sehingga keduanya memenuhi syarat untuk digabungkan. Contoh-contoh berikut menggabungkan kedua tabel ini secara tepat.

Mengapa Menggunakan UNION?

Misalkan terdapat kekurangan dalam desain basis data Anda dan Anda menggunakan dua tabel berbeda yang dimaksudkan untuk tujuan yang sama. Anda ingin menggabungkan kedua tabel ini menjadi satu sambil menghilangkan catatan duplikat dari tabel tersebut.ping ke dalam tabel baru. Anda dapat menggunakan UNION dalam kasus seperti ini.

Operator ini juga berguna dalam pekerjaan pelaporan sehari-hari:

  • ArchiData terverifikasi dan data langsung: Tabel saat ini dan tabel arsip yang memiliki kolom yang sama dapat dilaporkan bersama-sama, tanpa perlu menggabungkannya secara fisik.
  • Beberapa sumber, satu laporan: Jumlah anggota dan film, atau penjualan dari dua wilayah, dapat dicantumkan dalam satu output untuk audit cepat.
  • Pemeriksaan migrasi: Baris dari tabel lama dan tabel baru dapat ditumpuk dan dibandingkan sebelum tabel lama dihapus.

UNION bukanlah pengganti JOIN. UNION menambahkan baris di bawah baris, sedangkan JOIN menambahkan kolom di samping kolom, dan perbedaan itulah yang menentukan operator mana yang dibutuhkan untuk tugas tersebut.

MySQL Sintaks dan Aturan UNION

Setelah tujuannya jelas, perhatikan bentuk pernyataan dan aturan yang diterapkan oleh basis data.

SELECT column1, column2 FROM `table1`
UNION [DISTINCT | ALL]
SELECT column1, column2 FROM `table2`;

Tiga aturan mengatur setiap serikat pekerja:

  1. Jumlah kolom sama. Masing-masing PILIH pernyataan harus mengembalikan jumlah kolom yang sama, jika tidak MySQL Menimbulkan kesalahan 1222.
  2. Tipe data yang kompatibel dalam urutan yang sama. Kolom pertama dari kueri pertama dicocokkan dengan kolom pertama dari kueri kedua, jadi angka harus bertemu dengan angka dan teks harus bertemu dengan teks.
  3. Nama-nama tersebut berasal dari kueri pertama. Judul dari hasil pencarian diambil dari pernyataan SELECT pertama, oleh karena itu alias apa pun harus ada di sana.

An ORDER BY atau LIMIT Klausul yang ditempatkan di akhir berlaku untuk hasil gabungan, bukan hanya salah satu cabangnya, dan harus merujuk pada nama kolom yang dihasilkan oleh SELECT pertama.

UNION DISTINCT vs UNION ALL

Dengan aturan yang telah ditetapkan, keputusan selanjutnya adalah apakah baris duplikat harus dipertahankan.

Menggabungkan Tabel Menggunakan DISTINCT

Sekarang mari kita buat kueri UNION untuk menggabungkan kedua tabel menggunakan DISTINCT.

SELECT column1, column2 FROM `table1`
UNION DISTINCT
SELECT column1, column2 FROM `table2`;

Di sini baris duplikat dihapus dan hanya baris unik yang dikembalikan.

Persatuan-Berbeda

Catatan: MySQL menggunakan klausa DISTINCT sebagai default saat menjalankan kueri UNION jika tidak ada yang ditentukan.

Menggabungkan Tabel Menggunakan ALL

Sekarang mari kita buat kueri UNION untuk menggabungkan kedua tabel menggunakan ALL.

SELECT `column1`, `column2` FROM `table1`
UNION ALL
SELECT `column1`, `column2` FROM `table2`;

Di sini disertakan baris duplikat, karena kami menggunakan SEMUA.

Serikat-Semua

Kedua gambar tersebut memudahkan untuk melihat perbedaannya, dan tabel di bawah ini merangkumnya.

Titik perbandingan PERBEDAAN UNION UNI SEMUA
Baris duplikat Dihapus dari hasil Dipertahankan dalam hasil
Perilaku default Ya, diterapkan jika tidak ada yang ditentukan. Tidak, kata kunci ALL harus ditulis
Kecepatan Lebih lambat, diperlukan proses penghapusan duplikasi. Lebih cepat, baris dikembalikan saat dibaca.
Paling baik digunakan saat Daftar yang digabungkan harus berisi baris yang unik. Setiap baris penting, atau data duplikat tidak akan terjadi.

💡 Kiat: Jika kedua cabang tidak dapat menghasilkan baris duplikat, pilih UNION ALL. Basis data kemudian melewati pekerjaan pengurutan dan perbandingan yang dibutuhkan oleh DISTINCT, yang merupakan penghematan yang signifikan pada tabel besar.

Contoh Praktis Menggunakan MySQL Workbench

Contoh-contoh yang diberikan sejauh ini menggunakan tabel sampel. Kueri yang sama sekarang dijalankan terhadap basis data myflixdb yang sebenarnya, di mana kedua tabel tersebut menyimpan catatan yang cukup berbeda.

Di myFlixDB kita, mari kita gabungkan membership_number ke full_names kolom dari tabel anggota dengan movie_id ke title kolom dari tabel film. Kedua kueri mengembalikan dua kolom, jadi gabungannya valid.

Kita dapat menggunakan kueri berikut.

SELECT `membership_number`, `full_names` FROM `members`
UNION
SELECT `movie_id`, `title` FROM `movies`;

Menjalankan skrip di atas dalam MySQL meja kerja Jika dibandingkan dengan myflixdb, kita mendapatkan hasil seperti yang ditunjukkan di bawah ini. Perhatikan bahwa judul berasal dari SELECT pertama, meskipun baris-baris di bawahnya adalah catatan film.

membership_number full_names
1 Janet Jones
2 Janet Smith Jones
3 Robert Phil
4 Gloria Williams
5 Leonard Hofstadter
6 Sheldon Cooper
7 Rajesh Koothrappali
8 Leslie Winkle
9 Howard Wolowitz
16 67% Guilty
6 Angels and Demons
4 Code Name Black
5 Daddy's Little Girls
7 Davinci Code
2 Forgetting Sarah Marshal
9 Honey mooners
19 movie 3
1 Pirates of the Caribean 4
18 sample movie
17 The Great Dictator
3 X-Men

Pertanyaan Umum Demo Slot

UNION menumpuk baris dari satu kueri di bawah kueri lainnya, sehingga hasilnya menjadi lebih tinggi. A BERGABUNG Mencocokkan baris yang terkait dan menempatkan kolomnya berdampingan, sehingga hasilnya menjadi lebih lebar. Gunakan UNION untuk baris yang serupa, dan JOIN untuk tabel yang terkait.

Letakkan satu DIPESAN OLEH Klausul setelah SELECT terakhir. Klausul ini mengurutkan hasil gabungan dan harus menggunakan nama kolom yang dihasilkan oleh SELECT pertama. Klausul LIMIT yang ditempatkan di sana berperilaku dengan cara yang sama.

Error 1222 muncul ketika cabang SELECT mengembalikan jumlah kolom yang tidak sama. Hitung kolom di setiap cabang, dan tambahkan literal atau placeholder NULL ke cabang yang lebih pendek sehingga kedua sisi sejajar dalam urutan yang sama.

Ya. Asisten teks ke SQL, termasuk yang sudah terintegrasi di dalamnya. MySQL Workbench, hasilkan pernyataan UNION dari permintaan biasa. Periksa sendiri urutan kolomnya, karena sebuah model dapat menyelaraskan kolom yang hanya terlihat mirip.

Asisten dapat menyarankan UNION ALL ketika duplikat tidak mungkin terjadi, yang merupakan cara umum untuk mempercepat proses. Keputusan tetap bergantung pada data, jadi pastikan bahwa cabang-cabang tersebut benar-benar tidak dapat tumpang tindih sebelum menghapus langkah penghapusan duplikasi.

Ringkaslah postingan ini dengan: