Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL GROUP_CONCAT avec COLUMN SPLIT

Si vous connaissez le nombre d'entrées GROUP_CONCAT (je veux dire que 3 champs sont combinés dans le cas de ID =1 et 2 champs sont combinés dans le cas de 2, etc.), alors il y a un sale chemin.

SELECT ID, SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(NAME), ',', 1), ',', -1) AS CODE1,
If(  length(GROUP_CONCAT(NAME)) - length(replace(GROUP_CONCAT(NAME), ',', ''))>1,  
       SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(NAME), ',', 2), ',', -1) ,NULL) 
           as CODE2,
   SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(NAME), ',', 3), ',', -1) AS CODE3
FROM test
GROUP BY ID;

Sortie :

ID  CODE1   CODE2   CODE3
1   A          B    C
2   D       (null)  E
3   F          G    H

La requête ci-dessus suppose que vous êtes GROUP_CONCAT-ing 3 champs. Si vous générez une requête dynamiquement, vous pouvez essayer. SQLFIDDLE

MODIF : Remarque :Le CODE peut varier pour chaque LIGNE.(Ignorer ceci)