Maison > Questions et réponses > le corps du texte
P粉5205457532023-08-29 09:04:00
Vérifiez GROUP_CONCAT
si votre version MySQL (4.1) le prend en charge. Pour plus d'informations, consultez DocumentationDétails.
Cela ressemble à :
SELECT GROUP_CONCAT(hobbies SEPARATOR ', ') FROM peoples_hobbies WHERE person_id = 5 GROUP BY 'all';
P粉0418569552023-08-29 00:29:10
Vous pouvez utiliser GROUP_CONCAT< /代码>
:
SELECT person_id, GROUP_CONCAT(hobbies SEPARATOR ', ') FROM peoples_hobbies GROUP BY person_id;
Comme Ludwig l'a mentionné dans son commentaire, a> vous pouvez ajouter l'opérateur DISTINCT
DISTINCT pour éviter la duplication :
SELECT person_id, GROUP_CONCAT(DISTINCT hobbies SEPARATOR ', ') FROM peoples_hobbies GROUP BY person_id;
Comme Jan l'a mentionné dans leur commentaire, a> vous pouvez également trier les valeurs avant d'imploser en utilisant ORDER BY
ORDER BY :
SELECT person_id, GROUP_CONCAT(hobbies ORDER BY hobbies ASC SEPARATOR ', ') FROM peoples_hobbies GROUP BY person_id;
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 :
SET group_concat_max_len = 2048;
Bien sûr, vous pouvez changer 2048
2048 si vous le souhaitez. Calculer et attribuer des valeurs :
SET group_concat_max_len = CAST( (SELECT SUM(LENGTH(hobbies)) + COUNT(*) * LENGTH(', ') FROM peoples_hobbies GROUP BY person_id) AS UNSIGNED);