Maison >base de données >tutoriel mysql >Comment sélectionner un enregistrement aléatoire de chaque catégorie dans une base de données MySQL ?
Randomisation des sélections de bases de données dans plusieurs catégories
Le défi présenté ici est de récupérer un seul enregistrement aléatoire de chaque catégorie dans une base de données. La table Items héberge ces enregistrements, chacun affecté à une catégorie spécifiée par une table Categories correspondante.
Pour aborder cette tâche, on peut exploiter le caractère aléatoire inhérent à MySQL avec la fonction RAND() et la clause LIMIT 1. Cependant, l'aspect unique ici est la nécessité de sélectionner un enregistrement aléatoire pour chaque catégorie distincte.
La requête suivante relève ce défi avec élégance :
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
La structure de cette requête permet de récupérer un enregistrement aléatoire de chaque catégorie :
Bien que cette approche ne puisse pas se targuer d'une rapidité exceptionnelle, elle relève efficacement le défi de la sélection aléatoire d'enregistrements sur plusieurs catégories. Des suggestions alternatives d'optimisation sont les bienvenues, améliorant encore l'utilité de cette requête.
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!