MySQL UNION - Tam Eğitim

Anonim

Sendika nedir?

Birlikler, birden çok SELECT sorgusundan gelen sonuçları birleştirilmiş bir sonuç kümesinde birleştirir.

Bunun çalışması için tek gereksinim, sütun sayısının birleştirilmesi gereken tüm SELECT sorgularından aynı olması gerektiğidir.

Aşağıdaki gibi iki tablomuz olduğunu varsayalım

Şimdi DISTINCT kullanarak her iki tabloyu birleştirmek için bir UNION sorgusu oluşturalım.

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

Burada yinelenen satırlar kaldırılır ve yalnızca benzersiz satırlar döndürülür.

Not: MySQL, UNION sorgularını yürütürken, hiçbir şey belirtilmezse DISTINCT cümlesini varsayılan olarak kullanır.

Şimdi her iki tabloyu TÜMÜ kullanarak birleştirmek için bir UNION sorgusu oluşturalım.

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

Burada yinelenen satırlar dahil edilmiştir ve TÜMÜNÜ kullandığımız için.

Neden sendikalar kullanmalı

Veritabanı tasarımınızda bir kusur olduğunu ve aynı amaca yönelik iki farklı tablo kullandığınızı varsayalım. Yinelenen kayıtların yeni tabloya girmesini atlayarak bu iki tabloyu tek bir tabloda birleştirmek istiyorsunuz. Bu gibi durumlarda UNION kullanabilirsiniz.

Özet

  • UNION komutu, birden fazla SELECT sorgusu sonucunu tüm seçme sorgularından satırları içeren tek bir sorguda birleştirmek için kullanılır.
  • UNION komutunun çalışması için SELECT deyimlerindeki sütun ve veri türlerinin sayısı aynı olmalıdır.
  • DISTINCT deyimi, UNION sorgu sonuç kümesinden yinelenen değerleri elemek için kullanılır. MySQL, UNION sorgularını yürütürken, hiçbir şey belirtilmezse DISTINCT cümlesini varsayılan olarak kullanır.
  • ALL yan tümcesi, UNION sorgusundaki tüm yinelenen satırları bile döndürmek için kullanılır.

MySQL çalışma tezgahı kullanarak pratik örnekler

MyFlixDB'mizde birleştirelim

Üyeler tablosundan üyelik_sayı ve tam_adlar

ile

movie_id ve film tablosundan başlık

Aşağıdaki sorguyu kullanabiliriz

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

Yukarıdaki komut dosyasını MySQL çalışma tezgahında myflixdb ile çalıştırmak bize aşağıda gösterilen aşağıdaki sonuçları verir.

 
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