Veri Tabanında Tekrarlayan Veriler Nasıl Silinir? | SQL Çözümleri

Haz 29, 2019
tekrarlayan veriler sql duplicate silme sql group by sql inner join delete veri tabanı temizleme sql veri tekrarı duplicate kayıt temizleme sql öğrenme sql örnekleri mysql tekrar eden veriler
Veri Tabanında Tekrarlayan Veriler Nasıl Silinir? | SQL Çözümleri

Bazen daha önce yapılmış bir projenin yeniden kodlanması gerekebilir. Böyle durumlarda veri aktarımlarında veya yazılımcının ön göremeyerek yaptığı bu ufak sorunu şu şekilde çözebiliriz.

Tablomuzun SQL komutları:

CREATE TABLE iletisim (    id INT PRIMARY KEY AUTO_INCREMENT,    first_name VARCHAR(50) NOT NULL,    last_name VARCHAR(50) NOT NULL,     email VARCHAR(255) NOT NULL); INSERT INTO contacts (first_name,last_name,email) VALUES ('Carine ','Schmitt','[email protected]'),       ('Jean','King','[email protected]'),       ('Peter','Ferguson','[email protected]'),       ('Janine ','Labrune','[email protected]'),       ('Jonas ','Bergulfsen','[email protected]'),       ('Janine ','Labrune','[email protected]'),       ('Susan','Nelson','[email protected]'),       ('Zbyszek ','Piestrzeniewicz','[email protected]'),       ('Roland','Keitel','[email protected]'),       ('Julie','Murphy','[email protected]'),       ('Kwai','Lee','[email protected]'),       ('Jean','King','[email protected]'),       ('Susan','Nelson','[email protected]'),       ('Roland','Keitel','[email protected]');

bu SQL komutlarını attığınızda fark edeceksiniz ki aynı maile ait bir kaç kullanıcı var. Bu bir sorundur. eğer üyelik sistemi yada toplu mail gönderimlerinde problemler çıkarabilir. Tekrarlayan verilerin sayısını görmek için SQL komutu şu şekilde olacaktır:

SELECT     email, COUNT(email)FROM    iletisimGROUP BY     emailHAVING     COUNT(email) > 1;

Sonuç tablosuna göz atarsak göreceksiniz ki hangi mailden kaç tane var karşımıza çıkıyor.

Peki bu tekrar edenleri nasıl temizlerim ? Benim kişisel tercihim INNER JOIN kullanarak temizlemek. SQL komutumuz:

DELETE t1 FROM iletisim t1        INNER JOIN    iletisim t2 WHERE    t1.id < t2.id AND t1.email = t2.email;

Bu şekilde yaptğımızda ilk eklenen haricindeki tekrar eden hepsini silecektir. Kontrol için bir daha saydırmak için yazdığımız komutu kullanalım.

SELECT     email, COUNT(email)FROM    iletisimGROUP BY     emailHAVING     COUNT(email) > 1;

ekrana hiç bir tane verinin gelmediğini göreceksiniz. Temiz bir tablo elde ettiniz artık veri tabanınızdan azda olsa kalabalık kalkmış oldu. İyi kodlamalar.


Bertuğ Fahri Özer
Bertuğ Fahri Özer
super user

captcha