Hvis du kender antallet af GROUP_CONCAT-poster (jeg mener, 3 felter er kombineret i tilfælde af ID =1 og 2 felter kombineres i tilfælde af 2 osv.), så er der en beskidt måde.
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;
Output:
ID CODE1 CODE2 CODE3
1 A B C
2 D (null) E
3 F G H
Ovenstående forespørgsel antager, at du GROUP_CONCAT-er 3 felter. Hvis du dynamisk genererer forespørgsler, kan du prøve. SQLFIDDLE
EDIT: Bemærk:KODEN kan variere for hver RÆKKE.(Ignorerer dette)