Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL GROUP_CONCAT con COLUMN SPLIT

Se conosci il numero di voci GROUP_CONCAT (intendo che 3 campi sono combinati nel caso di ID =1 e 2 campi sono combinati nel caso di 2 ecc.), allora c'è un modo sporco.

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;

Uscita:

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

La query precedente presuppone che tu stia GROUP_CONCAT-ing 3 campi. Se stai generando una query dinamicamente, puoi provare. SQLFIDDLE

MODIFICA: Nota:il CODICE potrebbe variare per ogni RIGA.( Ignorandolo)