Tekrar Eden Kayıtları Silmek

Tekrar eden kayıtları silmek-sql

Rowid kullanarak tekrar eden kayıtları silelim.
-Test işlemleri için bir tablo create edelim..

Create table TEST_TAB
(
kisi_id NUMBER,
ad      VARCHAR2(100),
soyad   VARCHAR2(100)
);

-Tablomuza deneme kayıtları girelim.

1 numaralı kayıt 3 defa tekrar ederken,3 numaralı kayıt 2 defa tekrar ediyor, diğerleri tekil.

INSERT INTO TEST_TAB values(1,'ÖMER','ACAR');
INSERT INTO TEST_TAB values(1,'ÖMER','ACAR');
INSERT INTO TEST_TAB values(1,'ÖMER','ACAR');
INSERT INTO TEST_TAB values(2,'AYŞE','DEMİR');
INSERT INTO TEST_TAB values(3,'ALİ','AYDIN');
INSERT INTO TEST_TAB values(3,'ALİ','AYDIN');
INSERT INTO TEST_TAB values(4,'KORHAN','ÇELİK');
INSERT INTO TEST_TAB values(5,'ZEYNEP','GÜL');
INSERT INTO TEST_TAB values(6,'FERİDUN','ÇAKMAK');
INSERT INTO TEST_TAB values(7,'SEDA','ÇAKMAK');
INSERT INTO TEST_TAB values(8,'FATİH','TÜZÜN');

– Tablomuz;

Rowid ile tekrar eden kayıtları silmek

Tekrar eden kayıtlar

-Silinecek kayıtların listesi

 SELECT * FROM test_tab x WHERE x.rowid > 
(SELECT MIN(y.rowid) FROM test_tab y WHERE x.kisi_id=y.kisi_id)
Tekrar eden silenecek kayıtlar, rowid

Tekrar eden silenecek kayıtlar

-Mükerrer kayıtları silelim

DELETE FROM test_tab x
WHERE x.rowid > (SELECT MIN(y.rowid) FROM test_tab y
WHERE x.kisi_id=y.kisi_id)

-Sildikten sonra tablomuz;

Select * from TEST_TAB t;
3

Tekrar eden kayıtları sildikten sonraki temiz liste

Burda dikkat etmemiz gereken ben silme işlemini yaparken kisi_id alanı tekrar edenleri sildim.(delete’in where kısmı) siz bir kaç alanın daha tekrarına bakıyorsanız bunları da where kısmına eklemeniz gerekiyor)

Örneğin hem adı hem soyadı tekrar edenleri silelim dersek ;

DELETE FROM test_tab x
WHERE x.rowid > (SELECT MIN(y.rowid) FROM test_tab y
WHERE x.ad=y.ad
and   x.soyad=y.soyad)

Tagged: , , , ,

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir