2009-10-02 8 views
1

Supposons qu'il existe 3 champs dans une table mysql: id, word et date. Le champ de mot n'est pas un champ unique, de sorte que de nombreux enregistrements ont le même mot. Alors, comment puis-je savoir quel mot est le plus répété dans les enregistrements, exactement? Les plus répétées 5 mots ..Trouver la plupart des enregistrements.

+0

Qu'entendez-vous par "la plus grande partie des 5 enregistrements", les enregistrements créés les plus récents? – khelll

+0

Dans un champ, les données ne sont pas uniques .. et comment trouver le plus grand nombre d'enregistrements qui a la même valeur – Maxsy

+0

pouvez-vous donner une suggestion? – Maxsy

Répondre

1
Model.find(:all, :conditions => ["created_at > ?", DateTime.now - 2.hours], :limit => 5, :order => "desc") 
0
class Model < ActiveRecord::Base 

    named_scope :recent, :conditions => ["created_at > ?", DateTime.now - 2.hours], :limit => 5, :order => "desc" 

end 

Model.recent 
1

Les deux réponses ci-dessus semblent d'imprimer seulement le plus récent. Je pense que pour obtenir le plus souvent vous aurez besoin d'utiliser plus de SQL. :-(

En supposant que vous avez un modèle appelé message avec un champ appelé « texte » qui contient les messages ...

Message.find(:all, :select => '*, COUNT(*) AS count', 
        :group => 'text', 
        :order => 'count DESC', 
        :limit => 5) 

Disclaimer: Je ne l'ai jamais essayé de faire cela, sauf pour vérifier que le code

+0

Est-ce que cela fonctionne vraiment? – Lichtamberg

+0

Cela dépend de ce qu'il veut dire par "la plupart des 5 enregistrements" .... – khelll

+1

On pourrait supposer les 5 qui se produisent le plus. – Trejkaz

Questions connexes