Sélection d'un seul enregistrement aléatoire dans chaque catégorie dans MySQL
Pour récupérer un élément aléatoire de chaque catégorie dans la base de données spécifiée, deux une approche par étapes est recommandée. Tout d'abord, utilisez une requête pour combiner les tables d'éléments et de catégories dans un ordre aléatoire :
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();
Cette requête affichera tous les éléments joints à leurs catégories respectives dans un ordre aléatoire. Pour limiter la sélection à un élément par catégorie, imbriquez la requête précédente dans une instruction GROUP BY partielle :
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;
Ce GROUP BY partiel garantit que chaque catégorie ne contient qu'un seul élément sélectionné au hasard. Il est important de noter que la clause ORDER BY doit être appliquée avant la clause GROUP BY pour que cette approche fonctionne correctement.
Bien que cette méthode ne soit peut-être pas la plus rapide, elle offre un moyen fiable de sélectionner un seul enregistrement aléatoire. de chaque catégorie de votre base de données MySQL.
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!