6 Aralık 2016 Salı

Tablodaki tekrar eden aynı kayıtları bulma işlemi ( Finding duplicates rows in a table via sql )

Merhaba Arkadaşlar,

Bazen bir tabloda aynı kaydın farklı id ile birden fazla kaydedildiğine şahit olabilirsiniz.
Bunun sebebi yanlış tasarlanan veritabanı olabilir, unique constraintler doğru tasarlanmamış olabilir veya başka problemler olabilir. Böyle durumlarda mükerrer ( kendini tekrar eden )  kayıtları bulabilmek için aşağıdaki şekilde sorgunuzu düzenleyebilirsiniz.

  SELECT tablo_alani_1, count(tablo_alani_1)
  FROM tablo_adi
  GROUP BY  tablo_alani_1
  HAVING count(tablo_alani_1) > 1


Yukarıda yapılmak istenen nedir ? Ne yaptık biz şimdi burada derseniz ?

Tablomuz bir personel tablosu olsun diyelim. Aynı sicil numarası ile fakat farklı bir id ile aynı personelden birden fazla kayıt olduğunu düşündüğümüz de, tablodaki sonuçları sicil numarasına göre çekmeliyiz sicil numarasına göre gruplayarak sicil numarasını grup olarak sayarsak tek olan kayıtların count değeri 1 olacak kendini tekrar eden satırın count değeri 2 veya daha fazla olacaktır.
O yüzden having count(*) > 1 diyerek, count değeri 1'den büyük olan kayıt yani mükerrer kaydı tespit etmiş oluruz.
Senaryomuzu aşağıdaki gibi gerçekleyebiliriz.


 SELECT t.sicilNo, count(t.sicilNo)
  FROM personel t
  GROUP BY  t.sicilNo
  HAVING count(t.sicilNo) > 1


Umarım faydalı olur.

</Happy Coding>

Hiç yorum yok:

Yorum Gönder