Maison >base de données >tutoriel mysql >Comment puis-je générer des listes séparées par des virgules à partir des résultats d'une requête MySQL ?

Comment puis-je générer des listes séparées par des virgules à partir des résultats d'une requête MySQL ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-17 01:57:08324parcourir

How Can I Generate Comma-Separated Lists from MySQL Query Results?

Générer des listes séparées par des virgules à partir de données MySQL

Extraire des données dans un format spécifique, comme une liste séparée par des virgules, est une tâche courante. Supposons que vous ayez besoin de détails sur la publication et d'une liste de noms de sites associés, séparés par des virgules. Une approche naïve utilisant une sous-requête pourrait ressembler à ceci :

<code class="language-sql">SELECT p.id, p.name, 
       (SELECT name 
          FROM sites s 
         WHERE s.id = p.site_id) AS site_list
  FROM publications p</code>

Cependant, cela produit un seul nom de site par ligne, et non une liste séparée par des virgules.

La solution : GROUP_CONCAT

La clé pour créer la liste souhaitée séparée par des virgules est la fonction GROUP_CONCAT. Cette fonction concatène plusieurs valeurs en une seule chaîne, séparées par des virgules (ou un séparateur personnalisé). Voici la requête améliorée :

<code class="language-sql">SELECT p.id, p.name, GROUP_CONCAT(s.name) AS site_list
FROM sites s
INNER JOIN publications p ON (s.id = p.site_id)
GROUP BY p.id, p.name;</code>

Cette requête révisée utilise GROUP_CONCAT(s.name) pour combiner les noms de sites. Le INNER JOIN relie efficacement les tables publications et sites, et GROUP BY p.id, p.name garantit que la fonction GROUP_CONCAT regroupe correctement les noms de sites pour chaque publication.

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