MySQL UNION – Eğitimi Tamamla

Birlik nedir?

Birlikler, birden fazla SELECT sorgusunun sonuçlarını birleştirilmiş bir sonuç kümesinde birleştirir.

Bunun çalışması için gereken tek gereksinim, birleştirilmesi gereken tüm SELECT sorgularındaki sütun sayısının aynı olmasıdır.

Diyelim ki aşağıdaki gibi iki tablomuz var

MySQL BİRLİĞİMySQL BİRLİĞİ

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

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

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

Birlik-Farklı

Not: MySQL Hiçbir şey belirtilmemişse UNION sorguları yürütülürken DISTINCT yan tümcesini varsayılan olarak kullanır.

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

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

Burada yinelenen satırlar dahil edilmiştir ve ALL kullandığımızdan beri.

Birlik-Tümü

Birlikleri neden kullanmalı?

Veritabanı tasarımınızda bir kusur olduğunu ve aynı amaca yönelik iki farklı tablo kullandığınızı varsayalım. Bu iki tabloyu tek bir tablo içinde birleştirmek ve yinelenen kayıtların yeni tabloya sızmasını engellemek istiyorsunuz. Bu gibi durumlarda UNION'u 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.
  • Sütun sayısı ve veri türleri SELECT ifadeleri UNION komutunun çalışması için aynı olması gerekir.
  • DISTINCT yan tümcesi, UNION sorgu sonuç kümesindeki yinelenen değerleri ortadan kaldırmak için kullanılır. MySQL Hiçbir şey belirtilmemişse UNION sorguları yürütülürken DISTINCT yan tümcesini varsayılan olarak kullanır.
  • ALL yan tümcesi, UNION sorgusunda yinelenen tüm satırları bile döndürmek için kullanılır.

Kullanarak pratik örnekler MySQL tezgâh

myFlixDB'mizde birleştirelim

Üyeler tablosundaki üyelik_numarası ve tam_adlar

ile

movie_id ve film tablosundan başlık

Aşağıdaki sorguyu kullanabiliriz

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

Yukarıdaki betiğin çalıştırılması MySQL tezgâh myflixdb'ye karşı yaptığımız karşılaştırma bize aşağıda gösterilen sonuçları veriyor.

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