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
Répondre
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)
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%. –
Oui il y a: http://jan.kneschke.de/projects/mysql/order-by-rand/ – ircmaxell
cela fonctionne cependant - après le cas, 'quand', 'alors' et END, RAND() - finit la requête est parfaitement – InnateDev
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() ...
Vous pouvez essayer 'ORDER BY CASE, RAND()' . – phimuemue