Melanger les résultats d'une requête Mysql


Database
Voici une astuce intéressante qui permet de mélanger de façon aléatoire les résultats d'une requête Mysql. Pour ce faire, il suffit de rajouter la clause Order By suivante :

SELECT champ1, champ 2
FROM maTable
ORDER BY Rand(); 

Ce système évite notamment de coder son propre algorithme de mélange des résultats (utilisation de la fonction random par exemple), ici c'est le serveur Mysql qui s'en charge.


6 Commentaires pour "Melanger les résultats d'une requête Mysql"

Flux des commentaires de cet article Ajouter un commentaire
  •  

    Astuce intéressante, c'est noté :)

    RépondreRépondre
    Julien , le 26 juin 2007 à 14:05
  •  

    Euh, ça marche que pour Mysql 5, non ?

    RépondreRépondre
    hugues , le 26 juin 2007 à 20:54
  •  

    @Huges : je ne sais pas trop, j'ai mis en place cette astuce sur un mysql 5.0.x.

    En revanche, je crois qu'il faut bein faire attention à respecter la majuscule de la fonction Rand (j'avais vu cela quelque part).

    RépondreRépondre
    pti-seb , le 26 juin 2007 à 21:06
  •  

    J'ai trouvé cela sur le site de mysql :

    En MySQL version 3.23.x, vous pouvez faire :
    SELECT champ1 FROM table ORDER BY RAND();

    Sinon, j'ai vu que l'on pouvais également mettre un nombre entre les parenthèses.

    RépondreRépondre
    pti-seb , le 26 juin 2007 à 21:15
  •  

    Astuce completement inutile dans la mesure ou la fonction rand() sera appelé à chaque ligne.
    donc dès que votre table contient plus de 1000 lignes, le select va manger tout votre cpu....

    RépondreRépondre
    Fneufneu , le 4 septembre 2008 à 10:11
  •  

    @Fneufneu : l'utilisation de la fonction rand se fait au niveau de l'ORDER BY et non pas au niveau du SELECT. Le serveur MySQL fait donc le SELECT en premier et met en place un table temporaire des résultats. Le tri (Order by) se fait ensuite dans un deuxième temps sur cette table temporaire et n'affecte donc pas les ressources système pour autant.

    RépondreRépondre
    pti-seb , le 4 septembre 2008 à 12:29
 

Ajouter un commentaire

actualité android apache apple astuce astuces bash bilboblog blog boot chrome clavier commande commandes conky date debian Desktop développement elementary exploit faille fedora firefox flash gimp gnome google graphique Graphisme hack hacking Hardware humour intel internet iphone jailbreak Jeux Kde kernel libre Linux log logiciels Logiciels Libres lucid lynx maemo mail maquette metasploit microsoft mobile mockup monitoring mozilla multi-touch musique mysql n900 nautilus nokia noyau openoffice open source password photos php Planet publicité red hat redhat rpm réseau screenshot script serveur serveurs shell sql ssh statistiques sysadmin system Sécurité thème tux-planet tv twitter ubuntu unity vidéo vidéos vlc voyage wallpaper windows wordpress yum