2010-10-27 2 views
3

J'essaie de trouver un moyen de tirer 10 enregistrements aléatoires, puis de commander ces 10 enregistrements par un champ. Je l'ai essayé ce qui suit:Commande de requête MySQL par random et un champ?

SELECT nom FROM utilisateurs ORDER BY RAND(), nom LIMITE 10

mais il ne commande pas par son nom avec 10 lignes retournées, il suffit de retourner 10 enregistrement au hasard dans un ordre quelconque. Y a-t-il un moyen de commander par rand() et un champ dans une requête avec MySQL?

Répondre

1

Terminé juste faire le tri en php.

8
SELECT name 
FROM (
     SELECT name 
     FROM users 
     ORDER BY 
       RAND() 
     LIMIT 10 
     ) q 
ORDER BY 
     name 
+0

J'espérais une solution n'impliquant pas de sous-requêtes car l'implémentation des sous-requêtes serait difficile – ryanzec

+0

@ryanzec: qu'est-ce qui est difficile dans une sous-requête? – Quassnoi

+0

Eh bien, la requête est créée à travers un processus complexe en utilisant un tas de valeurs de formulaire différentes et est également en cours de décodage afin de générer les valeurs pour les champs de formulaire. Ne pas dire que cela ne peut pas être fait mais je devrais comprendre comment obtenir la requête générée correctement (je ne suis pas celui qui crée ce processus de génération de requête en premier lieu) et puis assurez-vous qu'il ne brise pas le décodage de la requête (qui utilise un tas d'expressions régulières). Juste en espérant une solution qui serait inférieure à un jour (pourrait finir par faire le tri aléatoire dans MySQL et le tri par champ dans PHP) – ryanzec