En utilisant MySQL
, je peux effectuer les opérations suivantes :
SELECT hobbies FROM peoples_hobbies WHERE person_id = 5;
Ma sortie :
shopping pêche codage
Mais je veux seulement 1 ligne, 1 colonne :
Résultat attendu :
shopping, pêche, codage
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.
J'ai recherché une fonction sur la documentation MySQL et il ne semble pas que les fonctions CONCAT
ou CONCAT_WS
Est-ce que quelqu'un ici sait comment faire ça ?
Vérifiez
GROUP_CONCAT
si votre version MySQL (4.1) le prend en charge. Pour plus d'informations, consultezDocumentationDétails.Cela ressemble à :
Vous pouvez utiliser
GROUP_CONCAT
:Comme Ludwig l'a mentionné dansson commentaire, a> vous pouvez ajouter l'opérateur
DISTINCT
DISTINCT pour éviter la duplication :Comme Jan l'a mentionné dansleur commentaire, a> vous pouvez également trier les valeurs avant d'imploser en utilisant
ORDER BY
ORDER BY :Comme Dag l'a déclaré dansson 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 :