Maison > base de données > tutoriel mysql > Comment sélectionner un enregistrement aléatoire dans chaque catégorie dans MySQL ?

Comment sélectionner un enregistrement aléatoire dans chaque catégorie dans MySQL ?

DDD
Libérer: 2024-12-26 15:55:14
original
554 Les gens l'ont consulté

How to Select a Random Record from Each Category in MySQL?

Sélection d'un enregistrement aléatoire dans chaque catégorie dans MySQL

Cette requête de base de données implique la sélection d'un enregistrement aléatoire dans chaque catégorie d'une table. Le tableau fourni contient un tableau « Éléments » avec des colonnes pour « id », « nom » et « catégorie ». Chaque élément appartient à l'une des sept catégories représentées dans le tableau "Catégories" avec les colonnes "id" et "category".

Pour aborder cette requête efficacement, vous pouvez utiliser une combinaison de jointures et la fonction RAND() . Voici la requête qui accomplit la tâche :

SELECT * FROM (
    SELECT
        c.id AS cid, c.category, i.id AS iid, i.name
    FROM categories c
    INNER JOIN items i ON c.id = i.category
    ORDER BY RAND()
) AS shuffled_items
GROUP BY cid
Copier après la connexion

Cette requête rejoint d'abord les tables "Catégories" et "Articles" sur la colonne "catégorie" pour récupérer tous les éléments et leurs catégories correspondantes. La clause ORDER BY RAND() applique un ordre aléatoire aux résultats. Par la suite, la requête est enveloppée dans une sous-requête et regroupée par la colonne « cid ». Ce regroupement garantit que chaque catégorie est limitée à un seul enregistrement aléatoire.

Notez qu'une optimisation des performances peut être nécessaire pour les grandes tables. Si la requête s'exécute lentement, envisagez d'utiliser les TABLES TEMPORAIRES de MySQL ou de créer un index sur la colonne "catégorie".

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal