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
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!