Oracle/SQL Duplicate Rows DELETE
Oracle veritabanınızda çift kayıtlardan her birini silmek için aşağıdaki pratik yöntemi kullanabilirsiniz.
Bu yöntem sayesinde oracle ya da sql veritabanımızda bulunan tabloda pk ya da benzersiz değer olmayan kolonlardaki duplicate rows/yinelenen kayıtları çok rahat tekilleyebilirsiniz. Bu adımları Exceldeki yinelenenleri kaldır işlemi gibi düşünebiliriz.
Öncelikle tabloda kaç kayıt olduğunu sorgulayıp aradaki farkı görebilirsiniz.
select count(*) from #ÇalışılanTablo;--Toplam kayıt sayısı
select count(*) from (select distinct * from #ÇalışılanTablo); --Benzersiz kayıt sayısı
select distinct (select count(*) from #ÇalışılanTablo) - (select count(*) from (select distinct * from #ÇalışılanTablo)) as Fark from #ÇalışılanTablo;--Üstteki iki satırın birleştirilmiş hali farkı görüyoruz.
İşlemlere başlayalım;
SELECT DISTINCT * INTO #GeciciTablo FROM #ÇalışılanTablo;
--Burada benzersiz olan kayıtları boş olan geçici tabloya kopyalıyoruz
--Eğer geçici tablomuz yok sıfırdan tabloyu klonlayacaksak üstteki script yerine bu scripti kullanabiliriz
CREATE TABLE #GeciciTablo AS SELECT DISTINCT * FROM #ÇalışılanTablo; --Tablomuzu klonladık
DELETE FROM #ÇalışılanTablo ;
--Çalıştığımız tablodaki bütün kayıtları siliyoruz/boşaltıyoruz
INSERT INTO #ÇalışılanTablo
SELECT * FROM #GeciciTablo ;
--Geçici tablodaki benzersiz kayıtları ana tabloya aktarıyoruz.
Commit; --Yaptığınız işlemler için commit verelim.
DROP TABLE #GeçiciTablo ;--Son olarak geçici tablomuzu veritabanımızdan silebiliriz.