Ако знаете броя на записите GROUP_CONCAT (имам предвид, че 3 полета са комбинирани в случай на ID =1 и 2 полета са комбинирани в случай на 2 и т.н.), тогава има мръсен начин.
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;
Изход:
ID CODE1 CODE2 CODE3
1 A B C
2 D (null) E
3 F G H
Горната заявка предполага, че сте GROUP_CONCAT-ing 3 полета. Ако динамично генерирате заявка, можете да опитате. SQLFIDDLE
РЕДАКТИРАНЕ: Забележка:КОДът може да варира за всеки РЕД.( Пренебрегвайки това)