SQL Server’da DISTINCT Kullanmadan Yinelenen Değerleri Kaldırmak

SQL Server'da DISTINCT Kullanmadan Yinelenen Değerleri Kaldırmak
SQL Server'da DISTINCT Kullanmadan Yinelenen Değerleri Kaldırmak

Herkese merhaba. Bu yazıda SQL Server’da DISTINCT kullanmadan yinelenen değerleri kaldırmak ile ilgili bilgi vermeye çalışacağım.

SQL Server’da verilerle çalıştığınızda, bazen veri girişleri nedeniyle değil, aynı zamanda T-SQL sorgularıyla da yinelenen veriler elde etme olasılıkları vardır. Çoğumuz DISTINCT anahtar sözcüğünü kullanır. DISTINCT kullanmak iyidir, bu yinelenen satırları kaldıracaktır. Ancak bazı durumlarda DISTINCT sorgu performansını iyileştirmez. Sorgu, yürütme için daha fazla zaman harcar ve daha fazla veriye sahipsek bu daha fazla zaman olacaktır.

ROW_NUMBER() kullanarak, sonuç kümesindeki yinelenen değerleri kaldırabiliriz. ROW_NUMBER(), sorgunun sonuç kümesindeki her satıra sıralı bir tamsayı numarası atayan bir fonksiyondur.

Aşağıda konuyla ilgili bir örnek görmektesiniz.

CREATE TABLE MusteriBilgileri (
    MusteriID INT,
    MusteriAdi VARCHAR(50),
    MusteriSoyadi VARCHAR(50),
    Email VARCHAR(100)
);


INSERT INTO MusteriBilgileri (MusteriID, MusteriAdi, MusteriSoyadi, Email)
VALUES
    (1, 'Ahmet', 'Yılmaz', 'ahmet.yilmaz@example.com'),
    (2, 'Ayşe', 'Kara', 'ayse.kara@example.com'),
    (3, 'Ahmet', 'Yılmaz', 'ahmet.yilmaz@example.com'),
    (4, 'Murat', 'Demir', 'murat.demir@example.com'),
    (5, 'Ayşe', 'Kara', 'ayse.kara@example.com'),
    (6, 'Emre', 'Beyaz', 'emre.beyaz@example.com');


WITH CTE
AS
(SELECT
		MusteriID
		,MusteriAdi
		,MusteriSoyadi
		,Email
		,ROW_NUMBER() OVER (PARTITION BY MusteriAdi, MusteriSoyadi, Email ORDER BY MusteriID) AS rn
	FROM MusteriBilgileri)
SELECT
	MusteriID
	,MusteriAdi
	,MusteriSoyadi
	,Email

FROM CTE
WHERE rn = 1

Yukarıdaki kodu çalıştırınca aşağıdakine benzer bir sonuç göreceksiniz.

SQL Server'da DISTINCT Kullanmadan Yinelenen Değerleri Kaldırmak

Görüldüğü üzere yinelenen satırlar kaldırılmış oldu.

Başka bir seçenek de, GROUP BY ifadesini kullanarak yinelenen değerleri kaldırmaktır. GROUP BY deyimi, aynı değerlere sahip satırları özet satırları halinde gruplandırır.

SELECT
	MusteriAdi
   ,MusteriSoyadi
   ,Email
FROM MusteriBilgileri
GROUP BY MusteriAdi
		,MusteriSoyadi
		,Email

Yukarıdaki kodu çalıştırınca aşağıdakine benzer bir sonuç göreceksiniz.

SQL Server'da DISTINCT Kullanmadan Yinelenen Değerleri Kaldırmak

Görüldüğü üzere yinelenen satırlar tekrar kaldırılmış oldu.

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

289 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!