SQL Cift Kayıtları Bulmak ve Silmek


Ağustos 2019 (0) Iptv 26.09.2021


Mükerrer kayıtlar her zaman başımıza bela olmuştur ve hep bizlere sorun çıkartmışlardır. Bu yazımızda da bu sorunun önüne nasıl geçeceğimizi göreceğiz. Aslında önüne geçmek değil de nasıl temizleyeceğimizi göreceğiz. Mükerrer kayıtları engellemek pek mümkün olmuyor. Yani tablolara index ‘ler versek bile indexli kolonlar hariç kalan diğer kolonlar mükerrer çıkabilir. Yada kayıt işlemini yapmadan önce girilen kayıtlar ile aynısı olan kayıt varmı kontrolü gibi kontroller ile önüne geçmeye çalışabiliriz.

Yol I – SQL Mükerrer Kayıtlar Bulmak ve Silmek

Şimdi SQL de mükerrer kayıtları nasıl bulacağımızı görelim.

Select Kolon_Adi, Count(Kolon_Adi) 
From Tablo_Adi 
Group By Kolon_Adi 
Having Count (Kolon_Adi) > 1


Bu sorgu bize Kolon_Adi verileri aynı olan verileri gösterecektir. Ama bunları silerken sorun yaşayabiliriz. Bu sebeple geçici olarak da olsa kolona bir ID kolonu ekleyip, primary key yapalım ve 1,1 otomatik artan olarak ayarlayalım. Sonraki işlem olarak da yukarıdaki sorgumuzu düzenleyelim.

Select Kolon_Adi as KLN, Count(Kolon_Adi) as ADET , MAX(ID) as ID
From Tablo_Adi
Group By Kolon_Adi
Having Count (Kolon_Adi) > 1

Şimdi, bu şekilde mükerrer kolonlarımızı bulmuş olduk. Bu kayıtları silmek istiyor isek nasıl sileceğimize bakalım.

Silme konusunda birden fazla örnek vereceğim.

Öncelikle yukarıdaki örneğimize göre bir silme işlemi yapalım.

Select Kolon_Adi as KLN, Count(Kolon_Adi) as ADET , MAX(ID) as ID
From Tablo_Adi
Group By Kolon_Adi
Having Count (Kolon_Adi) > 1


Öncelikle yukarıdaki örneğimize göre bir silme işlemi yapalım.
Delete from Tablo_Adi where ID in (

Select MAX(ID) as ID
From Tablo_Adi 
Group By Kolon_Adi 
Having Count (Kolon_Adi) > 1

)

Select Kolon_Adi as KLN, Count(Kolon_Adi) as ADET , MAX(ID) as ID
From Tablo_Adi 
Group By Kolon_Adi 
Having Count (Kolon_Adi) > 1

Yol II – SQL Mükerrer Kayıtlar Silmek

SQL Mükerrer Kayıtlar Bulmak ve Silmek işlemi bu kadardı. Ben hiç bakmayım sileyim derseniz de bir kaç farklı yöntem daha var.

Burada vereceğim yöntem yukarıdaki yöntemin tersi diyebilirim.

Delete
From Tablo_Adi
Where ID Not In
(
Select MIN(ID)
From Tablo_Adi
Group By Kolon1, Kolon2, Kolon3
)
Select Kolon_Adi as KLN, Count(Kolon_Adi) as ADET , MAX(ID) as ID
From Tablo_Adi 
Group By Kolon_Adi 
Having Count (Kolon_Adi) > 1

Yol III – SQL Mükerrer Kayıtlar Silmek

select * FROM TABLO_ADI WHERE ILGILI_SUTUN NOT IN
(
SELECT (ILGILI_SUTUN )
FROM TABLO_ADI 
Group By ILGILI_SUTUN 
Having Count (ILGILI_SUTUN ) > 1
)

and Tarih_Sutunu >='30.08.2019'


Yorum yapabilmek için giriş yapınız

Giriş Yap

Sitede Ara

ralfiSoft.com Download

DOWNLOADS