Comment concaténer plusieurs lignes MySQL en un seul champ ?
P粉482108310
2023-08-28 11:10:23
<p>En utilisant <code>MySQL</code>, je peux effectuer les opérations suivantes : </p>
<pre class="brush:php;toolbar:false;">SELECT hobbies FROM peoples_hobbies WHERE person_id = 5;</pre>
<p><strong>Ma sortie :</strong></p>
<pre class="brush:php;toolbar:false;">shopping
pêche
codage</pre>
<p>Mais je veux seulement 1 ligne, 1 colonne : </p>
<p><strong>Résultat attendu : </strong></p>
<pre class="brush:php;toolbar:false;">shopping, pêche, codage</pre>
<p>La raison est que je sélectionne plusieurs valeurs dans plusieurs tables et qu'après toutes les jointures, j'obtiens beaucoup plus de lignes que je ne le souhaite. </p>
<p>J'ai recherché une fonction sur la documentation MySQL et il ne semble pas que les fonctions <code>CONCAT</code> ou <code>CONCAT_WS</code> </p>
<p>Est-ce que quelqu'un ici sait comment faire ça ? </p>
Vérifiez
GROUP_CONCAT
si votre version MySQL (4.1) le prend en charge. Pour plus d'informations, consultez DocumentationDétails.Cela ressemble à :
Vous pouvez utiliser
GROUP_CONCAT
:Comme Ludwig l'a mentionné dans son commentaire, a> vous pouvez ajouter l'opérateur
DISTINCT
DISTINCT pour éviter la duplication :Comme Jan l'a mentionné dans leur commentaire, a> vous pouvez également trier les valeurs avant d'imploser en utilisant
ORDER BY
ORDER BY :Comme Dag l'a déclaré dans son commentaire, les résultats ont une limite de 1024 octets. Pour résoudre ce problème, exécutez cette requête avant :
Bien sûr, vous pouvez changer
2048
2048 si vous le souhaitez. Calculer et attribuer des valeurs :