2010-06-19 7 views
0

Ma requête sélectionne les résultats correctement en utilisant ORDER BY CASE. Je voudrais randomiser les résultats dans chaque cas. Par conséquent, mes résultats sont toujours triés par cas, mais dans le cas où les résultats sont aléatoires, ils sont aléatoires à chaque fois que la requête est exécutée.ordre aléatoire dans mysql ordre par cas

+0

Vous pouvez essayer 'ORDER BY CASE, RAND()' . – phimuemue

Répondre

0

Vous pouvez essayer ORDER BY CASE, RAND(). RAND() génère un nombre aléatoire, bien sûr.

Cependant, j'ai entendu quelque part que mélanger des éléments dans SQL n'est pas tout à fait le moyen le plus efficace et il est préférable de randomiser des éléments dans PHP. Mais les randomiser par cas n'est pas une tâche triviale. (PHP rand() function)

+0

Je crois qu'il y a un problème avec l'utilisation de RAND pour trier dans MySQL quand le jeu de résultats est grand, mais je ne suis pas sûr à 100%. –

+0

Oui il y a: http://jan.kneschke.de/projects/mysql/order-by-rand/ – ircmaxell

+0

cela fonctionne cependant - après le cas, 'quand', 'alors' et END, RAND() - finit la requête est parfaitement – InnateDev

0

Souvent, par simplicité, je vais lancer une fonction NewID() dans un SQL Order By pour randomiser l'ordre des résultats. Dans votre cas, vous pouvez utiliser uniqid(), ou si vous passez vraiment la requête directement à MSSQL, vous pouvez aussi utiliser NEWID() ...

+0

comment cela fonctionnerait-il dans MySQL - je ne suis pas sûr de ce que je devrais être 'google-ing' ici NewID() ?? – InnateDev

+0

MySql utilise uniqid() pour générer l'équivalent d'un GUID. Essayez ça ... – fdfrye