Alper ÇELİK

Bilgisayar Mühendisi

CTE(common table expression) kullanarak mükerrer kayıtları silmek

Konuya giriş yapmadan evvel benim daha önce CTE ile ilgili giriş seviyesinde yazmış olduğum makalemi okumanızı tavsiye ederim. İlgili makaleme<a href="http://www.yazilimciningunlugu.com/MakaleDetay.aspx?MakaleID=7" target="_blank"> buradan </a> ulaşabilirsiniz.
Örnek senaryomuzu AdventureWork 2012 DB sindeki Person tablosunu kullanarak yapacağım. Öncelikle tablonun orjinalini bozmamak adına geçici bir tablo yaratalım:
 
 
SELECT *
INTO TempPerson
FROM Person.Person
 
Şimdi de mükerrer kayıt sayılarını gruplayalım bakalım:  
 
 
SELECT FirstName, LastName, COUNT(1) as Adet FROM TempPerson
GROUP BY FirstName, LastName
HAVING COUNT(1)>1
 
Aynı ad ve soyad bilgisine sahip kişilerin dökümünü getirmiş oluyoruz bu sorguyla. Sorgu sonucu 380 satırlık bilgi dönüyor bende.
 
Devam edelim..
Şimdi asıl sorgumuzu yazmaya geldi sıra:  
 
 
 
WITH Mukerrer AS
(
SELECT BusinessEntityID,  
ROW_NUMBER() OVER (PARTITION BY FirstName, LastName
ORDER BY BusinessEntityID DESC) AS ID
FROM TempPerson
)
DELETE Mukerrer
WHERE ID>1  
 
Ve bu sorguyuda çalıştırdığımızda artık tablomuzda mükerrer kayıtlar teke düşüyor.
Umarım faydalı bir yazı olmuştur.Hepinize iyi çalışmalar dilerim.
 
 
 
 
 

Trigger Serisinin İlk Bölümüne Buradan Ulaşabilirsin

Trigger'lar özelleşmiş bir tür stored prosedürlerdir(SP).