MySQL UNION - Tutorial Lengkap

Anonim

Apa itu kesatuan?

Kesatuan menggabungkan hasil dari beberapa pertanyaan SELECT ke dalam set hasil gabungan.

Satu-satunya syarat untuk berfungsi ialah bilangan lajur harus sama dari semua pertanyaan PILIH yang perlu digabungkan.

Katakan kita mempunyai dua jadual seperti berikut

Sekarang mari buat pertanyaan UNION untuk menggabungkan kedua-dua jadual menggunakan DISTINCT

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

Di sini baris pendua dikeluarkan dan hanya baris unik dikembalikan.

Catatan: MySQL menggunakan klausa DISTINCT sebagai lalai semasa menjalankan pertanyaan UNION jika tidak ada yang ditentukan.

Sekarang mari buat pertanyaan UNION untuk menggabungkan kedua-dua jadual menggunakan SEMUA

SELECT `column1`,` column1` FROM `table1`UNION ALLSELECT ` column1`,` column1` FROM `table2`;

Di sini baris pendua disertakan dan kerana kami menggunakan SEMUA.

Mengapa menggunakan kesatuan

Katakan ada kekurangan dalam reka bentuk pangkalan data anda dan anda menggunakan dua jadual berbeza yang bertujuan untuk tujuan yang sama. Anda mahu menggabungkan dua jadual ini menjadi satu sambil menghilangkan sebarang catatan pendua daripada merayap ke jadual baru. Anda boleh menggunakan UNION dalam kes seperti itu.

Ringkasan

  • Perintah UNION digunakan untuk menggabungkan lebih dari satu hasil pertanyaan SELECT menjadi satu pertanyaan yang mengandungi baris dari semua pertanyaan terpilih.
  • Bilangan lajur dan jenis data dalam pernyataan PILIH mesti sama agar perintah UNION berfungsi.
  • Klausa DISTINCT digunakan untuk menghilangkan nilai pendua dari set hasil pertanyaan UNION. MySQL menggunakan klausa DISTINCT sebagai lalai semasa melaksanakan pertanyaan UNION jika tidak ada yang ditentukan.
  • Klausa SEMUA digunakan untuk mengembalikan semua baris pendua dalam pertanyaan UNION.

Contoh praktikal menggunakan meja kerja MySQL

Di myFlixDB kami mari menggabungkan

keahlian_nombor dan nama penuh dari jadual Ahli

dengan

movie_id dan tajuk dari jadual filem

Kita boleh menggunakan pertanyaan berikut

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

Melaksanakan skrip di atas di meja kerja MySQL terhadap myflixdb memberi kita hasil berikut seperti yang ditunjukkan di bawah.

 
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