J'ai besoin d'une fonction, qui retourne une liste de chaînes.
J'ai des données dans la table comme ceci:
Id MyString
------------------------
1 First
2 Second
3 Third
4 Fourth
J'ai besoin de fonctionner comme ceci (quelque chose comme ça marche dans Oracle):
select LISTAGG(MyString, ', ') as myList where id < 4
Cela retourne quelque chose comme ceci:
myList
------------------------
First, Second, Third
Des idées?
Vous recherchez GROUP_CONCAT ()
Essaye ça:
select group_concat(MyString separator ', ') as myList from table
where id < 4
Bien sûr, vous pouvez group by
les résultats.
Depuis MySQL 5.7.22, vous pouvez également utiliser deux fonctions d'agrégation JSON: JSON_ARRAYAGG ou JSON_OBJECTAGG . Vous pouvez les combiner avec les fonctions JSON de MySQL pour obtenir des résultats agrégés au format JSON. Contrairement à GROUP_CONCAT
, il n'y a pas de paramètre de configuration MySQL qui limiterait la taille de la valeur renvoyée, autre que max_allowed_packet
(qui affecte toutes les requêtes).