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.
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')
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)