You are currently viewing tekrar eden kayıtları silme mysql
tekrar eden kayıtları silme mysql

tekrar eden kayıtları silme mysql

Merhaba arkadaşlar uzun aradan sonra tekrar birşeyler paylaşmak istedim. Bugün mysql ile php kullanmadan tekrar eden kayıtları silme mysql veya 3 parti bir yazılım aracı ile sorguyu çalıştırarak kayıtlarınızı nasıl silebilirsiniz onu anlatmak istedim.
Tamam ama bu ne işe yarayacak diyen arkadaşlar için tablonuzda tekrar eden kayıtları bulmak, bu kayıtları gruplamak gibi benzer işlemler için kullanabilirsiniz. Bazı firmalar yada pimpirikli müdürleriniz sizden bak bakalım bu adam bizden kaç defa alışveriş yapmış yada kaç adet kaydı var diyebilir bu durumlar için aşağıdaki kodu kullanarak bunları öğrenebilirsiniz. Kodları yazdıktan sonra kısa açıklamasını yapacağım herhangi bir sorunda paylaşırsanız elimden geldiğince yardımcı olmaya çalışırım.

DELETE FROM tablo where tablo.id  IN (SELECT * from ( select MIN(a.id) FROM tablo as a group by a.alan having count(*) > 1) as p) 

Burada yaptığım işlemler şunlardır;
1. tablo alanımdaki id alanımın içinde geçen ( tablo değerimdeki tekrar eden kayıtlar içinde id’si küçük olan değeri bul ) id’yi bul ve sil dedim.

Bunu afrklı şekilde kullanmak benim tekrar eden kayıtlarım kaç adet diye merak edersenizde kullanacağınız kod blogu ise ;

select count(*) as tekrar FROM tablo as a group by a.alan having count(tekrar) > 1 

şeklinde kullanarak kendinize göre dizayn edebilirsiniz.

sun-mysql

MySQL Nedir?

MySQL, altı milyondan fazla sistemde yüklü bulunan çoklu iş parçacıklı (İng. multi-threaded), çok kullanıcılı (İng. multi-user), hızlı ve sağlam (İng. robust) bir veri tabanı yönetim sistemidir.

UNIX, OS/2 ve Windows platformları için ücretsiz dağıtılmakla birlikte ticari lisans kullanmak isteyenler için de ücretli bir lisans seçeneği de mevcuttur. Linux altında daha hızlı bir performans sergilemektedir. Kaynak kodu açık olan MySQL’in pek çok platform için çalıştırılabilir ikilik kod halindeki indirilebilir sürümleri de mevcuttur. Ayrıca ODBC sürücüleride bulunduğu için birçok geliştirme platformunda rahatlıkla kullanılabilir.

Geliştiricileri, 500’den fazlası 7.000.000 kayıt içeren 10.000 tablodan oluşan kendi veritabanlarını (100 gigabyte civarında veri) MySQL’de tuttuklarını söylüyorlar.

Web sunucularında en çok kullanılan veri tabanı olup ASP, PHP gibi birçok Webprogramlama dili ile kullanılabilir.

MySQL, tuttuğu tablolarla çok kullanıcılı sistemlerde söz konusu olan erişim hakları sorununu başarılı bir şekilde çözmektedir. MySQL’in 4.0 sürümü ile birlikte “transaction” desteği, 4.1 sürümüyle birlikte de alt sorgu desteği eklenmiştir.

Ayrıca “veri tutarlılığını (İng. referential integrity)” sağlama işinin programcıya bırakılması tercih edilmiştir, ancak bu bir dezavantaj olarak görülmeyebilir. Çünkü pek çok veri tabanı programcısı VTYS’lerdeki veri tutarlılığının esnek olmayan, zorlayıcı bir özellik olduğunu düşünmektedir.

kurtitasarim

‘’İrade ve yargıları aşan güçlü bir coşku, ihtiras" diye tanımlanır tutku. Yaptığın işi sevmek yerine, sevdiğin işi yap mottosu da benim tutku tanımım. Kod yazmak bir yana, o kodun sistem üzerindeki hareketlerini, farklı cihazlar ile etkileşimini, o noktalarda oluşan sıkıntıları görmek, çözmek ve bunu yaparken diğer kişilere yol göstermek işimin en zevkli yanı. Bu sebeple önce tutku ile yapılan iş, sonra maddiyat..

This Post Has 3 Comments

  1. Anonim

    Visitor Rating: 4 Stars

  2. ahmet

    merhaba
    SELECT
    product_id,
    product_code,
    product_price,
    COUNT(*) AS tekrar
    FROM
    products
    GROUP BY
    product_code
    HAVING
    tekrar > 1
    ORDER BY
    product_code ASC
    bu yapı ile tekrar eden ürünleri listeliyorum ama silmeyi beceremedim.
    aynı üründen iki tane giriş var ve aynı product_code da birde ürünün düşük fiyatlı olanını silmek istiyorum

    1. kurtitasarim

      bu işlemi üç şekilde yapabilirsiniz;
      1. bütün select sorgusunu bir variable değere atarak delete işlemini product_id in diyerek çıktısı fırlatabilirsiniz.
      2. bir php yöntemi ile sql sorgunuzu çıktı alarak foreach sokarak silebilirsiniz.
      3. left join ile
      bunların dışında dilerseniz tablonuzu gönderirseniz local üzerinde sql sorgusunu hazırlayıp sizinle paylaşabilirim.

Bir cevap yazın