T-SQL’de UNION ve UNION ALL Komutları

UNION ve UNION ALL, T-SQL’de (Transact-SQL) birden fazla SELECT sorgusunun sonuçlarını birleştirmek için kullanılan operatörlerdir. İşlevleri benzer olsa da aralarında önemli farklar vardır.

UNION

Tekrarlı satırları otomatik olarak kaldırır. (DISTINCT uygular)Sıralama yapar. (performansı etkileyebilir)

Birleştirme yapacak kolon türlerinin aynı olması gerekmektedir. Yoksa kolon isimlerinin ve içerisindeki verilerin farklı olması bir işe yaramaz. Değerlerin hepsi birbirinden farklıysa iki tablonun toplamı boyutunda sonuç dönmektedir.

select AdSoyad from Kullanicilar
union
select UrunAdi  from Siparisler

UNION kullanırken her iki SELECT ifadesindeki kolon sayısının mutlaka aynı olması gerekir.
Birinci sorguda sadece AdSoyad (1 kolon) var. İkinci sorguda sadece UrunAdi (1 kolon) var. Her ikisinde de 1’er kolon olduğu için bu sorgu teknik olarak çalışır. Eğer birinde 5, diğerinde 4 kolon olsaydı hata alınırdı.
UNION komutu verileri dikey olarak birleştirir. Yani sonuç kümesi tek bir sütun halinde görünür.

Veri Tipleri: Kolon isimleri farklı olsa bile (AdSoyad vs UrunAdi), bu kolonların veri tiplerinin uyumlu olması gerekir. Her ikisi de metin (NVARCHAR/VARCHAR) olduğu için sorun çıkmaz.

Tekilleştirme (Distinct): UNION komutu varsayılan olarak tekrar eden kayıtları siler. Eğer hem kullanıcı adı hem de ürün adı “Ahmet” ise, sonuç listesinde “Ahmet” sadece bir kez görünür.

Kolon Başlığı: Sonuç kümesinin başlığı her zaman ilk sorgudaki kolon ismini (AdSoyad) alır.


UNION ALL

Tüm satırları olduğu gibi birleştirir, tekrarları kaldırmaz. Daha hızlıdır. Çünkü sıralama ve distinct işlemi yapmaz.

Aşağıdaki komutta aynı değere sahip iki kolonu çağırdığımızda sonuç iki tablonun toplamı şeklinde gelmektedir.

select AdSoyad from Kullanicilar
union all
select AdSoyad  from Kullanicilar2

Sorgumuza ek bir kolon eklenebilir. Üst sorgu ile alt sorgunun kolonlarının eşit sayıda olması gerekmektedir.

select AdSoyad,'YUNUS' from Kullanicilar
union 
select AdSoyad, 'YUCEL' from Kullanicilar2

Önemli Kurallar

1. Sütun sayıları aynı olmalıdır.
2. Karşılıklı sütun veri tipleri uyumlu olmalıdır.
3. Sütun isimleri ilk sorgudakine göre belirlenir.

Join işlemleri satırları yan yana eklerken union ifadesi tabloları alt alta eklemektedir.

UNION ALL, UNION’a göre daha hızlıdır çünkü ek işlem yapmaz. Eğer sonuçlarda kesinlikle tekrar olmayacağını biliyorsanız veya tekrarları önemsemiyorsanız UNION ALL kullanmanız önerilir.

Birleştirilen tabloların kolon isimleri ilk sorgudan gelen kolon isimleri ile oluşturulmaktadır. Üsteki sorgudan kaç adet kolon çekilmişse alttaki kolonlardanda aynı kolon sayısı aynı olması gerekmektedir.

 UNION işleminde Distinct Sort işlemi yani tekrarlayan kayıtları temizleme işlemi yapıldığı için Sorgu maliyeti daha fazla olmaktadır.

Başka makalede görüşmek dileğiyle..

“Sabret, Allah’ın verdiği söz şüphesiz gerçektir. Suçunun bağışlanmasını dile; Rabbini akşam, sabah, överek tesbih et.” Mü’min Suresi; 55. Ayet

Author: Yunus YÜCEL

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir