Maison >base de données >tutoriel mysql >Comment puis-je limiter le nombre de compétences affichées dans une requête GROUP_CONCAT aux trois premières ?

Comment puis-je limiter le nombre de compétences affichées dans une requête GROUP_CONCAT aux trois premières ?

DDD
DDDoriginal
2024-11-26 14:38:10404parcourir

How Can I Limit the Number of Skills Shown in a GROUP_CONCAT Query to the Top Three?

GROUP_CONCAT avec limite de compétences

Dans une base de données avec des joueurs et leurs compétences dans une relation plusieurs-à-plusieurs, une requête est nécessaire pour listez les joueurs et leurs trois principales compétences. La requête initiale tente d'utiliser GROUP_CONCAT pour concaténer les titres de compétences, mais il lui manque un moyen de limiter le nombre de compétences à trois.

Solution :

Alors que GROUP_CONCAT ne le fait pas prend directement en charge une limite, une solution de contournement peut être utilisée en post-traitant la chaîne concaténée :

substring_index(group_concat(s.title SEPARATOR ','), ',', 3) as skills

Ceci La commande extrait les trois premiers titres de compétences séparés par des virgules de la chaîne concaténée. Cela suppose que les noms des compétences ne contiennent pas de virgules et que le nombre de compétences est raisonnablement petit.

Remarque :

Pour garantir des résultats corrects, la table player_skills doit avoir un clé primaire constituée du tuple (player_id, skills_id), empêchant que la même compétence soit attribuée plusieurs fois à un joueur.

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