Est-il possible de concaténer plusieurs lignes MySQL dans un seul champ ?
P粉556159786
2023-08-22 14:02:48
<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 une ligne et une colonne : </p>
<p><strong>Sortie souhaitée : </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 plus de lignes que je ne le souhaite. </p>
<p>J'ai recherché une fonction dans la documentation MySQL et il semble que les fonctions <code>CONCAT</code> ou <code>CONCAT_WS</code> </p>
<p>Alors, est-ce que quelqu'un ici sait comment faire ça ? </p>
Si votre version MySQL (4.1) le prend en charge, vous pouvez le vérifier
GROUP_CONCAT
. Veuillez vous référer à la Documentation pour plus de détails.L'instruction de requête est la suivante :
Vous pouvez utiliser la fonction
GROUP_CONCAT
:Comme Ludwig l'a mentionné dans son commentaire, vous pouvez ajouter l'opérateur
DISTINCT
pour éviter la duplication :Comme Jan l'a mentionné dans leur commentaire, vous pouvez également trier les valeurs avant de les fusionner, en utilisant
ORDER BY
:Comme Dag l'a déclaré dans son commentaire, il y a une limite de 1024 octets pour les résultats. Pour résoudre ce problème, exécutez la requête suivante avant votre requête :
Bien sûr, vous pouvez modifier la valeur de
2048
selon vos besoins. Voici comment calculer et attribuer des valeurs :