TEKRAR EDEN KAYITLARI TEMİZLEME YÖNTEMLERİ 2

Merhaba Arkadaşlar ,

Tekrar eden kayıtları silme adlı makale serimin 2. sini sizlerle paylaşıyorum. Burada 1. Yöntemin tersine daha farklı bir yöntemle duplicate yani tekrar eden kayıtları silme işlemi uygulayacağız.

Bu sorunun cevabına geçmeden önce ;

Bir test tablosu ve içerisine de bir den fazla aynı kayıt basılmış bir veri bloğu lazım.

Test tablomuzu ve içerisine basacağımız verinin scriptini aşağıda sizlerle paylaşmaktayım.

--Test DB 'si oluşturma ...
CREATE DATABASE SQLTURKIYE;
GO
-- Test Tablomuzu oluşturuyoruz.
CREATE TABLE DuplicateTable2
    (
      Identity_Number CHAR(11) ,
      Name VARCHAR(50) ,
      SurName VARCHAR(75)
    );
GO

--Tablomuza veri basalım ...
INSERT  INTO DuplicateTable2
VALUES  ( '11111111111', 'Yusuf', 'Kahveci' );
INSERT  INTO DuplicateTable2
VALUES  ( '22222222222', 'Yaşar', 'Kahveci' );
INSERT  INTO DuplicateTable2
VALUES  ( '11111111111', 'Yusuf', 'Kahveci' );
INSERT  INTO DuplicateTable2
VALUES  ( '22222222222', 'Yaşar', 'Kahveci' );

 

Tablomuzun içerisindeki dataları kontrol edecek olursak.

SELECT  *
FROM    DuplicateTable2;

 

4

Amacımız yukarıdada gördüğümüz gibi tekrar eden kayıtları silmektir. Aynı TC Kimlik Numarasına sahip olan kullanıcıları silmek istersek ;

WITH    DuplicaTe ( Identity_Number, Total_Count )
          AS ( SELECT   Identity_Number ,
                        ROW_NUMBER() OVER ( PARTITION BY Identity_Number ORDER BY Name ) AS Total_Count
               FROM     DuplicateTable2
             )
    SELECT  *
    FROM    DuplicaTe
    WHERE   Total_Count > 1;

Yukarıda ki Script ile aynı TC Kimlik numarasına sahip kaçar kişi var bu bilgiye erişip. Bunun akabinde de silme işlemini gerçekleştirebiliriz.

5

 

Yukarıda ki ekran görüntüsünde yer alan TC Kimlik numaralardan ikişer tane yer almaktadır. bunlardan birtanesini silmemiz gerekmektedir.

WITH    DuplicaTe ( Identity_Number, Total_Count )
          AS ( SELECT   Identity_Number ,
                        ROW_NUMBER() OVER ( PARTITION BY Identity_Number ORDER BY Name ) AS Total_Count
               FROM     DuplicateTable2
             )
    DELETE  FROM DuplicaTe
    WHERE   Total_Count > 1;

 

Yukarıda ki Script ile silme işlemini gerçekleştirerek tablomuzun içerisinde ki data bilgilerini kontrol edebiliriz.

SELECT  *
FROM    DuplicateTable2;

 

6

Tekrarlayan Kayıtları bunların dışında bir çok yöntemlede temizleyebirlisiniz. Bunun akabinde Cursor mantığı vb. tarzda kullanarak row row kontrol şeklinde DELTE işlemlerini sağlayabilirsiniz fakat Cursor yöntemini diğer yöntemlere göre tavsiye etmiyorum . Performans açısından.

 

Tekrarlayan ( Duplicate) kayıtları Silme Yöntemleri Makale serim bu kadar.

İyi Çalışmalar.

Leave a Reply

Your email address will not be published. Required fields are marked *