+ Yanıtla
Toplam 2 sonuçtan 1 ile 2 arası olanlar

Konu Başlığı: en çok tekrar eden satırlar

  1. #1

    en çok tekrar eden satırlar

    arkadaşlar selamlar.

    MySQL de referansid değeri en çok tekrar eden 50 id değerini nasıl çekerim.

    diyelimki tablomuzun başlıkları aşağıdaki gibi ve tabloda hayli fazla kayıt var. Ben bu tablodan referansid değeri en çok tekrar edenden en az tekrar edene doğru 50 id değerini nasıl çekebilirim.

    id-----referansid----baslik-----icerik-----tarih

    teşekkürler.

  2. #2
    Kod:
    select GROUP_CONCAT(id) as ids,
           referansid,
           count(referansid) as counter
    from `test2`
    group by referansid
    order by counter desc
    limit 50
    "ids" kolonu karşılık gelen referansid'lere sahip id'leri virgül ile birleştirerek verir. Dönen sonuçtan "counter" kolonu "ids" kolonunda kaç tane "id" olduğu bilgisini verir. Limitleme işlemini ise kod tarafında "counter" kolonunu toplayarak kontrolünü yapmak daha pratiktir.

    Ancak performans açısından bu sorgu yerlerde sürüklendiğinden dolayı, "counter" adında yeni bir kolon açıp bir cron ile bu alanı düzenli güncellemek veya her yeni kayıt eklendiğinde ilgili referansid counter'larını 1 arttırmak ve buna göre sorgu yapmak daha uygun olabilir. Alternatif olarak bu sorgu ve sonucu veren fonksiyon / sınıf beraber ön-belleğe alınabilir.
    Spoiler:
    imzaya sponsor?

+ Yanıtla

Bu konu başlığı için etiketler

Mesaj Seçenekleri

  • Yeni başlık açamazsınız
  • Cevap yazabilirsiniz
  • Dosya ekleyemezsiniz
  • Mesajlarınızı değiştiremezsiniz