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!