En fait, la question est de savoir comment s'en sortir :
foo\_id foo\_name
1 A
1 B
2 C
à ça :
foo\_id foo\_name
1 A B
2 C
En fait, la question est de savoir comment s'en sortir :
foo\_id foo\_name
1 A
1 B
2 C
à ça :
foo\_id foo\_name
1 A B
2 C
SELECT id, GROUP_CONCAT(name SEPARATOR ' ') FROM table GROUP BY id;
https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html#function_group-concat
Du lien ci-dessus, GROUP_CONCAT
: Cette fonction renvoie un résultat de type chaîne de caractères avec les valeurs non NULL concaténées d'un groupe. Elle renvoie NULL s'il n'y a pas de valeurs non NULL.
SELECT id, GROUP_CONCAT( string SEPARATOR ' ') FROM table GROUP BY id
Plus de détails aquí .
Du lien ci-dessus, GROUP_CONCAT
: Cette fonction renvoie un résultat de type chaîne de caractères avec les valeurs non NULL concaténées d'un groupe. Elle renvoie NULL s'il n'y a pas de valeurs non NULL.
SELECT id, GROUP_CONCAT(name SEPARATOR ' ') FROM table GROUP BY id;
:- Dans MySQL, vous pouvez obtenir les valeurs concaténées des combinaisons d'expressions . Pour éliminer les valeurs dupliquées, utilisez la fonction DISTINCT clause. Pour trier les valeurs dans le résultat, utilisez la clause ORDER BY. Pour trier dans ordre inverse , ajoutez le DESC (descendant) au nom de la colonne sur laquelle vous effectuez le tri dans la clause ORDER BY. L'ordre par défaut est l'ordre ascendant ; il peut être spécifié explicitement à l'aide du mot-clé ASC. Le séparateur par défaut entre les valeurs d'un groupe est la virgule (","). Pour spécifier un séparateur de manière explicite, utilisez SEPARATOR suivi de la valeur littérale de la chaîne qui doit être insérée entre les valeurs du groupe. Pour éliminer complètement le séparateur, spécifiez SÉPARATEUR '' .
GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_name | expr}
[ASC | DESC] [,col_name ...]]
[SEPARATOR str_val])
OU
mysql> SELECT student_name,
-> GROUP_CONCAT(DISTINCT test_score
-> ORDER BY test_score DESC SEPARATOR ' ')
-> FROM student
-> GROUP BY student_name;
Le résultat est tronqué à la longueur maximale donnée par la variable système group_concat_max_len, dont la valeur par défaut est de 1024 caractères, ce que nous faisons d'abord :
SET group_concat_max_len=100000000;
et ensuite, par exemple :
SELECT pub_id,GROUP_CONCAT(cate_id SEPARATOR ' ') FROM book_mast GROUP BY pub_id
Le résultat est tronqué à la longueur maximale donnée par la variable système group_concat_max_len, qui a une valeur de 1 à 2. valeur par défaut de 1024 des personnages. docs
Quelle est la portée de ce group_concat_max_len
config ? La connexion/session en cours, ou cela affectera-t-il d'autres clients ?
@FrozenFlame : > Si aucun modificateur n'est présent, SET modifie la variable de session. Si la variable n'a pas de valeur de session, une erreur se produit. À partir de dev.mysql.com/doc/refman/5.7/fr/utilisation-du-système-variables.html
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
3 votes
@barlop a réparé ça en éditant les questions et les réponses.