Veri tabanında tekrarlayan verileri nasıl temizlerim ?

Veri tabanında tekrarlayan verileri nasıl temizlerim ?

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
    iletisim
GROUP BY 
    email
HAVING 
    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
    iletisim
GROUP BY 
    email
HAVING 
    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.

Veri tabanında tekrarlayan verileri nasıl temizlerim ? - bertugfahriozer.com Veri tabanında tekrarlayan verileri nasıl temizlerim ? - bertugfahriozer.com Veri tabanında tekrarlayan verileri nasıl temizlerim ? - bertugfahriozer.com Veri tabanında tekrarlayan verileri nasıl temizlerim ? - bertugfahriozer.com

Veri tabanında tekrarlayan verileri nasıl temizlerim ? - bertugfahriozer.com

Veri tabanında tekrarlayan verileri nasıl temizlerim ? - bertugfahriozer.com

Veri tabanında tekrarlayan verileri nasıl temizlerim ? - bertugfahriozer.com

Veri tabanında tekrarlayan verileri nasıl temizlerim ? - bertugfahriozer.com

Veri tabanında tekrarlayan verileri nasıl temizlerim ? - bertugfahriozer.com
Veri tabanında tekrarlayan verileri nasıl temizlerim ? - bertugfahriozer.com