SQL Server’da CTE ve Row_Number Kullanarak Tekrarlanan Kayıtları Silmek
Herkese merhaba,
Bu yazıda SQL Server’da CTE ve Row_Number kullanarak tekrarlanan kayıtların nasıl silineceğinden bahsedeceğim. İşlemi daha iyi anlamak için aşağıdaki örneğimizi inceleyelim.
--Tablo Oluşturma CREATE TABLE Calisanlar ( CalisanID INT , Adi VARCHAR(20) ) --Tabloya insert işlemi INSERT INTO Calisanlar VALUES ( 1, 'Yavuz' ) INSERT INTO Calisanlar VALUES ( 1, 'Yavuz' ) INSERT INTO Calisanlar VALUES ( 2, 'Pelin' ) INSERT INTO Calisanlar VALUES ( 3, 'Bilge' ) INSERT INTO Calisanlar VALUES ( 3, 'Bilge' ) INSERT INTO Calisanlar VALUES ( 3, 'Bilge' ) --CTE Kullanımı WITH CTE_CiftKayitlariSil AS ( SELECT CalisanID , Adi , ROW_NUMBER() OVER ( PARTITION BY CalisanID, Adi ORDER BY CalisanID, Adi ) RowNumberKullan FROM Calisanlar ) DELETE FROM CTE_CiftKayitlariSil WHERE RowNumberKullan != 1 --Tablonun listelenmesi SELECT * FROM Calisanlar
İlk olarak tablo oluşturduk. Sonrasında bu tablo içerisine benzer kayıtlar girdik. Hem CalisanId değeri hem de Adi değerleri aynı olan kayıtları tablomuza girdik. Bu işlem bittikten sonra CTE kullanarak çift kayıtları sildik. Benzer kayıtları silmek için kullandığımız yapı ise Row_Number fonksiyonudur. Row_Number fonksiyonu burada CalisanID ve Adi değerlerine göre benzer olanları gruplayıp numaralandırıyor. Delete kısmında ise numarası birden farklı olanları sil diyoruz ve işlem tamamlanmış oluyor.
Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.