select id, group_concat(`Name` separator ',') as `ColumnName`
from
(
select
id,
concat(`Name`, ':', group_concat(`Value` separator ',')) as `Name`
from mytbl
group by
id,
`Name`
) tbl
group by id;
Implementaci můžete vidět zde:Sql Fiddle Demo . Přesně to, co potřebujete.
Aktualizovat Rozdělení ve dvou krocích. Nejprve dostaneme tabulku se všemi hodnotami (oddělenými čárkou) proti jedinečnému [Jméno, id]. Poté ze získané tabulky získáme všechna jména a hodnoty jako jednu hodnotu proti každému jedinečnému id. Viz toto vysvětlení zde Ukázka SQL Fiddle (přejděte dolů, protože má dvě sady výsledků)
Upravit Došlo k chybě při čtení otázky, seskupil jsem ji pouze podle id. Ale dva group_contacts jsou potřeba, pokud (hodnoty mají být zřetězeny seskupené podle Name a id a pak přes všechny podle id). Předchozí odpověď byla
select
id,group_concat(concat(`name`,':',`value`) separator ',')
as Result from mytbl group by id
Implementaci můžete vidět zde:Ukázka SQL Fiddle