DISTINCT Nedir?
SQL DISTINCT, sorgularda tekrar eden (duplicate) verileri filtrelemek için kullanılır. Bir sorguda belirli sütunlarda benzersiz (unique) sonuçlar elde etmek istiyorsanız DISTINCT kullanabilirsiniz.
Bir sütundaki tüm farklı değerleri listeleme, Birden fazla sütunun benzersiz kombinasyonlarını elde etme, tekil kayıt sayısını hesaplamak istiyorsanız distinct kullanarak işlemlerinizi kolaylaştırabilirsiniz.
DISTINCT, genellikle büyük veri setlerinde gereksiz tekrarları önleyerek daha verimli analiz yapmayı sağlar.
DISTINCT Syntax Yapısı
1 2 | SELECT DISTINCT sutun1, sutun2, ... FROM tablo_adi; |
- sutun1, sutun2, …: Benzersiz değerleri almak istediğiniz sütunları belirtir.
- tablo_adi: Verilerin bulunduğu tabloyu belirtir.
DISTINCT Kullanırken Dikkat Edilmesi Gerekenler
- DISTINCT tüm sütunlara uygulanır: Birden fazla sütun kullanıldığında, DISTINCT her satırın tamamını değerlendirir.
- Performansa dikkat edilmeli: Büyük veri setlerinde DISTINCT kullanımı sorgu performansını etkileyebilir, gereksiz yere kullanılmamalıdır.
- NULL değerler tek bir benzersiz değer olarak sayılır: Eğer bir sütunda NULL değerler varsa, DISTINCT bunları tek bir benzersiz değer olarak kabul eder.
Örneğin:
1 2 | SELECT DISTINCT kategori FROM urunler; |
Eğer urunler tablosunda NULL değerler varsa, DISTINCT bunları yalnızca bir kez döndürecektir.
1 2 3 4 5 6 7 | -- Kötü örnek SELECT DISTINCT * FROM cok_buyuk_tablo; -- İyi örnek SELECT DISTINCT gerekli_sutun FROM cok_buyuk_tablo; |
Büyük tablolarda tüm sütunlarla DISTINCT kullanmak performans sorunlarına yol açacaktır. Sadece işlem yapmak istediğiniz sütun seçilerek devam edilirse kod daha stabil çalışacaktır.
DISTINCT Kullanımı ile İlgili Örnekler
Tek Bir Sütundaki Benzersiz Değerleri Listeleme
Örneğin, bir calisanlar tablosunda farklı departmanları listelemek istiyoruz:
1 2 | SELECT DISTINCT departman FROM calisanlar; |
departman |
---|
Bilgi İşlem |
Muhasebe |
İnsan Kaynakları |
Pazarlama |
Birden Fazla Sütunu DISTINCT ile Kullanma
DISTINCT, birden fazla sütun ile kullanıldığında, sütunların birlikte benzersiz kombinasyonlarını döndürür.
1 2 | SELECT DISTINCT departman, pozisyon FROM calisanlar; |
departman | pozisyon |
Bilgi İşlem | Yazılım Uzmanı |
Bilgi İşlem | Sistem Yöneticisi |
Muhasebe | Muhasebe Müdürü |
İnsan Kaynakları | Uzman |
Sipariş Veren Müşterileri Tekrar Etmeden Listeleme
Eğer bir siparisler tablosunda, hangi müşterilerin sipariş verdiğini tekrar etmeden görmek istiyorsanız:
1 2 | SELECT DISTINCT musteri_adi FROM siparisler; |
musteri_adi |
Ahmet Yılmaz |
Mehmet Demir |
Ayşe Kaya |
Bir Tablodaki Farklı Şehirleri Listeleme
Bir musteriler tablosundaki farklı şehirleri listelemek için DISTINCT kullanabiliriz:
1 2 | SELECT DISTINCT sehir FROM musteriler; |
sehir |
Denizli |
Ankara |
İzmir |
Bursa |
DISTINCT ile COUNT Kullanımı
Eğer belirli bir sütundaki benzersiz değerlerin sayısını bulmak istiyorsanız COUNT fonksiyonu ile DISTINCT kullanabilirsiniz.
Örneğin, kaç farklı departmanın bulunduğunu bulalım:
1 2 | SELECT COUNT(DISTINCT departman) AS farkli_departman_sayisi FROM calisanlar; |
farkli_departman_sayisi |
4 |