2010-08-22 5 views
1

Je n'ai pas été en mesure de trouver un très bon moyen d'obtenir 10 enregistrements aléatoires sur une base de données sqlite. J'ai vu quelques exemples qui fonctionnent avec mysql, mais ils ne semblent pas bien fonctionner avec sqlite même si j'essaie d'utiliser Random() au lieu de rand().Obtenir 10 enregistrements aléatoires de base de données SQLite

J'ai essayé d'obtenir des nombres aléatoires et ensuite obtenir les enregistrements par ID, mais pour une raison quelconque, je reçois un résultat nul pour quelques-uns d'entre eux. J'étais curieux s'il y avait une meilleure approche.

Aussi comme note de côté c'est le jour 3 pour mon utilisation de Ruby et Rails donc encore un peu nouveau pour elle.

Répondre

4

Que diriez-vous

User.all.sort_by{rand}.slice(0,10) 

?

Ceci est juste pour le test, non?

Modifier: Aucune base de données indépendante plus, mais, pour sqlite3:

User.find(:all, :order => "RANDOM()", :limit => 10) 

et mysql:

User.find(:all, :order => "RAND()", :limit => 10) 
+0

Cela fonctionnait très bien, je vous remercie. En fait, c'est pour un projet où sur la page d'accueil je veux afficher plusieurs choses au hasard. Heureusement, c'est un projet personnel, donc la performance n'a pas vraiment d'importance. – percent20

+0

Oh, donc c'est pour le site actuel plutôt que, disons, dans la console. Ok, éditer ma réponse pour donner un meilleur moyen qui fonctionne pour sqlite3. Je l'ai juste testé dans ma console (soutenu par sqlite3) et ça semble bien, donc je ne suis pas sûr de savoir pourquoi il échoue pour vous. Je suis d'accord avec votre commentaire sur RAND() vs RANDOM(). – unsorted

+0

voir aussi http: //trevorturk.com/2007/12/04/random-records-in-rails/... ressemble à un article utile et pertinent (surtout à la suite des commentaires) – unsorted

Questions connexes