Maison > base de données > tutoriel mysql > le corps du texte

Comment combiner la sélection aléatoire et le tri basé sur le nom dans MySQL ?

Susan Sarandon
Libérer: 2024-10-26 01:48:02
original
715 Les gens l'ont consulté

How to Combine Random Selection and Name-Based Sorting in MySQL?

MySQL : réaliser la randomisation et le tri basé sur le nom

Lorsque vous travaillez avec des bases de données MySQL, il est souvent nécessaire de récupérer un sous-ensemble de données tout en garantissant un ordre spécifique. Un scénario courant consiste à sélectionner un échantillon aléatoire d'enregistrements, tels que des utilisateurs, puis à organiser davantage les résultats en fonction d'un attribut spécifique, comme le nom.

Solution de requête initiale

Une première tentative pour atteindre il s'agirait d'utiliser la requête suivante :

<code class="sql">SELECT * FROM users WHERE 1 ORDER BY rand(), name ASC LIMIT 20</code>
Copier après la connexion

Cependant, cette requête peut ne pas fournir les résultats attendus car la fonction rand() trie l'ensemble de données de manière aléatoire et l'ordre ASC des noms ultérieurs n'est pas garanti.

Solution de requête améliorée

Pour réaliser efficacement la randomisation tout en garantissant également un tri basé sur le nom, une approche de sous-requête est recommandée :

<code class="sql">SELECT * FROM
(
    SELECT * FROM users ORDER BY rand() LIMIT 20
) T1
ORDER BY name </code>
Copier après la connexion

Dans cette requête, la sous-requête la plus interne ( SELECT * FROM users ORDER BY rand() LIMIT 20) sélectionne un échantillon aléatoire de 20 utilisateurs. La clause LIMIT 20 garantit que seules 20 lignes sont renvoyées.

La requête externe utilise ensuite les résultats de la sous-requête comme entrée, notée T1. Il applique la clause de nom ORDER BY pour organiser les résultats de la sous-requête par ordre croissant par nom. Cela combine efficacement le caractère aléatoire de la sélection initiale avec le tri souhaité basé sur le nom.

En utilisant cette approche de sous-requête, vous pouvez récupérer un échantillon aléatoire d'utilisateurs et les trier par ordre alphabétique en fonction de leurs noms, comme prévu.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!