Merhaba arkadaşlar,
Bu yazıda mssql içerisindeki sinir bozucu tekrarlayan kayıtları silmeyi göstereceğim.
Aslında konumuz oldukça basit ancak bulunamadığı zaman da bir o kadar sinir bozucu elbette. 🙂 Sorgumuz aşağıdaki gibi;
DELETE FROM SilinecekTabloAdi WHERE NOT PrimaryKey IN ( SELECT MIN(PrimaryKey) FROM SilinecekTabloAdi GROUP BY MukerrerHücre/ler)
İşte bu kadar aslında. Gelin bir de kısaca ne demek istiyoruz bahsedelim;
SilinecekTabloAdi kısmı mükerrer kayıtların bulunduğu tablomuzun adı.
PrimaryKey dediğimiz alan ise genel olarak çoğu database mimarının ID/id olarak nitelendirdiği tekrarlanmayan kayıt kimlik numarası alanı.
MukerrerHücre/ler kısmı ise bu alana göre kayıtlarımızı gruplandıracağımız (örn. AdSoyad) kısmıdır.
Yani kısacası aşağıdaki gibi bir tablomuz olduğunu düşünürsek;
Tablomuzun Adı: UYELER olsun
ID | AdiSoyadi | TelefonNumarasi
1 Erkan DOMURCUK 0(242)1234567
2 Erkan DOMURCUK 0(242)1234567
3 Erkan DOMURCUK 0(242)1234567
4 Recep Aslan 0(242)1234567
işte böyle bir tabloyu aşağıdaki sorguya maruz bıraktığımızda;
DELETE FROM UYELER WHERE NOT ID IN ( SELECT MIN(ID) FROM UYELER GROUP BY AdiSoyadi)
şeklinde bir sorgumuz olmuş olur ve çıktısı ise;
ID | AdiSoyadi | TelefonNumarasi
1 Erkan DOMURCUK 0(242)1234567
4 Recep Aslan 0(242)1234567
Şeklinde olacaktır. Yani mükerrer kayıtların ilk kayıtları hariç tümünü silecek bir sorguya sahip olmuş olduk.
DipNot: Eğer profesyonel bir yazılımcı değil isek (tabi kendimizi böyle görmek ne kadar doğru bilinmez) mutlaka bu işlem öncesinde yapma ihtimaliniz olan hatalara karşın öncesinde ufak bir yedek almakta fayda var 😉 🙂
Kolaylıklar dilerim 🙂
Teşekkürler hocam yeni gördüm sitenizi hayırlı olsun. Hemen buldum ne hikmetse ve de çok işime yaradı.
Ellerinize sağlık
Ustad guzel bir konu olmus. Sagolasin.