Mükerrer (Tekrar Eden) Kayıt Sil - Microsoft SQL Server


T-SQL ve iç içe sorgular kullanarak mükerrer kayıt silme işlemi yapmaya yarayan alternatif bir T-SQL sorgusu aşağıda verilmiştir.

Hazırlık

Tablo Oluştur

Tablo oluşturma ve veri ekleme işlemi için aşağıdaki sorguyu kullanabilirsiniz.


CREATE TABLE kisiler
(
	kisi_id INT PRIMARY KEY NOT NULL IDENTITY(1,1),
	kisi_ad NVARCHAR(50)
)

INSERT INTO kisiler(kisi_ad) VALUES('Erman')
INSERT INTO kisiler(kisi_ad) VALUES('Erman')
INSERT INTO kisiler(kisi_ad) VALUES('Erman')
INSERT INTO kisiler(kisi_ad) VALUES('Ahmet')
INSERT INTO kisiler(kisi_ad) VALUES('Ahmet')
INSERT INTO kisiler(kisi_ad) VALUES('Ahmet')
INSERT INTO kisiler(kisi_ad) VALUES('Mehmet')
INSERT INTO kisiler(kisi_ad) VALUES('Mehmet')
INSERT INTO kisiler(kisi_ad) VALUES('Mehmet')
INSERT INTO kisiler(kisi_ad) VALUES('Mehmet')
INSERT INTO kisiler(kisi_ad) VALUES('Veli')
INSERT INTO kisiler(kisi_ad) VALUES('Veli')
INSERT INTO kisiler(kisi_ad) VALUES('Veli')
INSERT INTO kisiler(kisi_ad) VALUES('Pelin')
INSERT INTO kisiler(kisi_ad) VALUES('Pelin')

Sorgu

En Küçük ID Numarasına Göre Mükerrer Kayıt Sil


DELETE FROM kisiler 
WHERE NOT   kisi_id 
IN          (SELECT MIN(kisi_id) FROM kisiler GROUP BY kisi_ad)

/*
kisiler tablosundaki verileri sil fakat şart olarak kisi_ad sütununa göre
gruplama yaptığımız zaman bu gruptaki en küçük kisi_id değerine sahip olanı
(en büyük de olabilir) bu silme işlemine dahil etme.
IN komutu bunu sağlıyor.
*/

SELECT * FROM kisiler

En Büyük ID Numarasına Göre Mükerrer Kayıt Sil


DELETE FROM kisiler 
WHERE NOT   kisi_id 
IN          (SELECT MAX(kisi_id) FROM kisiler GROUP BY kisi_ad)

Etiketler
microsoft sql server