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
DDDoriginal
2024-12-20 10:52:09820parcourir

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

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!

Déclaration:
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