Maison >base de données >tutoriel mysql >Comment puis-je concaténer plusieurs lignes MySQL en un seul champ ?

Comment puis-je concaténer plusieurs lignes MySQL en un seul champ ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-25 09:21:09214parcourir

How Can I Concatenate Multiple MySQL Rows into a Single Field?

Combinaison de plusieurs lignes MySQL en un seul champ

Les jointures MySQL renvoient souvent de nombreuses lignes, ce qui rend l'analyse des données fastidieuse. Cet article montre comment combiner efficacement plusieurs lignes en un seul champ pour une manipulation plus facile.

La fonction GROUP_CONCAT est la clé de ce processus. Par exemple :

<code class="language-sql">SELECT person_id,
       GROUP_CONCAT(hobbies SEPARATOR ', ')
FROM peoples_hobbies
GROUP BY person_id;</code>

Cette requête regroupe les loisirs par person_id, en les concaténant avec des virgules comme séparateurs.

Pour supprimer les doublons, utilisez DISTINCT :

<code class="language-sql">SELECT person_id,
       GROUP_CONCAT(DISTINCT hobbies SEPARATOR ', ')
FROM peoples_hobbies
GROUP BY person_id;</code>

Pour les résultats triés, utilisez ORDER BY :

<code class="language-sql">SELECT person_id,
       GROUP_CONCAT(hobbies ORDER BY hobbies ASC SEPARATOR ', ')
FROM peoples_hobbies
GROUP BY person_id;</code>

N'oubliez pas que GROUP_CONCAT a une limite par défaut de 1 024 octets. Pour augmenter cela, utilisez :

<code class="language-sql">SET group_concat_max_len = 2048;</code>

Ou, calculez dynamiquement la longueur requise :

<code class="language-sql">SET group_concat_max_len = CAST(
                     (SELECT SUM(LENGTH(hobbies)) + COUNT(*) * LENGTH(', ')
                           FROM peoples_hobbies
                           GROUP BY person_id) AS UNSIGNED);</code>

GROUP_CONCAT simplifie la manipulation des données en consolidant plusieurs lignes en un seul champ plus gérable.

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