Pokud znáte počet záznamů GROUP_CONCAT (myslím tím, že 3 pole jsou kombinována v případě ID =1 a 2 pole jsou kombinována v případě 2 atd.), pak je to špinavá cesta.
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;
Výstup:
ID CODE1 CODE2 CODE3
1 A B C
2 D (null) E
3 F G H
Výše uvedený dotaz předpokládá, že jste GROUP_CONCAT-ing 3 pole. Pokud dynamicky generujete dotaz, můžete to zkusit. SQLFIDDLE
UPRAVIT: Poznámka:KÓD se může pro každý ŘÁDEK lišit.(Toto bude ignorováno)