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 ?
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!