Randomisation et tri des données MySQL
Dans MySQL, vous pouvez combiner la clause ORDER BY avec la fonction rand() pour récupérer des enregistrements aléatoires de un tableau. Cependant, si vous tentez de trier davantage les résultats randomisés à l'aide d'une autre colonne, vous risquez de rencontrer un comportement inattendu.
Pour résoudre ce problème, la requête doit être structurée comme une sous-requête. La requête interne récupère 20 utilisateurs aléatoires en utilisant ORDER BY rand() LIMIT 20.
<br>SELECT * FROM users ORDER BY rand() LIMIT 20<br>
La table temporaire résultante, qui contient les utilisateurs aléatoires, est ensuite référencée par la requête externe. La requête externe trie à nouveau la table temporaire par colonne de nom par ordre croissant :
<br>SELECT * FROM <br>(</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">SELECT * FROM users ORDER BY rand() LIMIT 20
) T1
ORDER BY name ASC
Cette approche garantit que l'ensemble de résultats final se compose de 20 utilisateurs sélectionnés au hasard, classés par leurs noms par ordre croissant.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!