SQL Server’da Union ve Union All Operatörleri Arasındaki Farklar

Herkese merhaba,

Bu başlık altında SQL Server’da Union ve Union All operatörleri arasındaki farkları inceleyeceğiz.

Union operatörü birleşen iki tabloda tekrarlanan satırları getirmezken Union All operatörü tekrarlanan satırları da getirir.

Konuyu daha iyi anlamak adına örnekler yapalım.

Örnek 1 

DECLARE @Tablo1 AS TABLE (
	ID INT
   ,Ad VARCHAR(10)
   ,Telefon VARCHAR(12)
)
DECLARE @Tablo2 AS TABLE (
	ID INT
   ,Ad VARCHAR(10)
   ,Telefon VARCHAR(12)
)
INSERT INTO @Tablo1
	VALUES (1, 'Yavuz', '88996655')
INSERT INTO @Tablo1
	VALUES (2, 'Selim', '99986655')
INSERT INTO @Tablo2
	VALUES (1, 'Hasan', '88446655')
INSERT INTO @Tablo2
	VALUES (2, 'Selim', '99986655')
SELECT
	*
FROM @Tablo1
UNION
SELECT
	*
FROM @Tablo2

Görüldüğü üzere Union yapıldığı zaman 3 adet veri gelecektir. Aynı işlemi Union All ile yaparsak.

DECLARE @Tablo1 AS TABLE (
	ID INT
   ,Ad VARCHAR(10)
   ,Telefon VARCHAR(12)
)
DECLARE @Tablo2 AS TABLE (
	ID INT
   ,Ad VARCHAR(10)
   ,Telefon VARCHAR(12)
)
INSERT INTO @Tablo1
	VALUES (1, 'Yavuz', '88996655')
INSERT INTO @Tablo1
	VALUES (2, 'Selim', '99986655')
INSERT INTO @Tablo2
	VALUES (1, 'Hasan', '88446655')
INSERT INTO @Tablo2
	VALUES (2, 'Selim', '99986655')
SELECT
	*
FROM @Tablo1
UNION ALL
SELECT
	*
FROM @Tablo2

Burada görüldüğü üzere ise 4 adet sonuç dönmüş oldu. Union’da benzer kayıtları getirmedi. Union All’da ise getirmiş oldu.

Örnek 2

CREATE DATABASE UnionveUnionAllOrnekDatabase
GO
USE UnionveUnionAllOrnekDatabase
GO
CREATE TABLE dbo.Musteriler (
	MusteriID INT
   ,Ad VARCHAR(50)
   ,Sehir VARCHAR(50)
)
GO
INSERT INTO dbo.Musteriler
	VALUES (1, 'Yavuz Selim', 'İstanbul'), (2, 'Selim Kart', 'Konya')
GO
CREATE TABLE dbo.Calisanlar (
	CalisanID INT
   ,CalisanAd VARCHAR(50)
   ,Sehir VARCHAR(50)
)
GO
INSERT INTO dbo.Calisanlar
	VALUES (1, 'Selim Kart', 'Konya'), (2, 'Mustafa Kart', 'İstnabul'), (3, 'Fevziye Kart', 'Konya'), (4, 'Bilge Nuray Kart', 'İstanbul')
GO
SELECT
	Ad
FROM dbo.Musteriler
UNION
SELECT
	CalisanAd
FROM dbo.Calisanlar

Union operatörü ile 5 adet sonuç geldi. Union All ile aynı işlemi yapalım. Veri tabanını tekrar oluşturmuyoruz. Buna dikkat edelim.

SELECT
	Ad
FROM dbo.Musteriler
UNION ALL
SELECT
	CalisanAd
FROM dbo.Calisanlar

Not : Eğer iki tablo içinde tekrar etmeyen veri olduğundan emin iseniz Union All kullanmanızı öneririm. Union kullanırsanız sizin için daha maliyetli bir kod olabilir.

Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.

1.364 Kez Okundu

Yavuz Selim Kart

Yazılım ve veri tabanında bildiklerimi anlatmaya gayret ediyorum. Halen birçok programlama dili üzerinde araştırmalar yaparak kendimi geliştiriyorum. Bunlar haricinde Grafik Tasarım ve Wordpress konularına da ilgim bulunmakta. SEO ve Sosyal medya yönetimleri hakkında da bilgim mevcuttur. Kısaca çok çalışmayı seven azimli biriyim.

You may also like...

Yazı kopyalamak yasaktır!