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-20 10:52:09
original
819 Les gens l'ont consulté

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();
Copier après la connexion

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;
Copier après la connexion

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!

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