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.
