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;
Можете да го видите внедрен тук:Sql Fiddle Демо . Точно това, от което се нуждаете.
Актуализиране Разделяне на две стъпки. Първо получаваме таблица с всички стойности (разделени със запетая) срещу уникален [Име, идентификатор]. След това от получената таблица получаваме всички имена и стойности като единична стойност срещу всеки уникален идентификатор. Вижте това обяснено тук Демонстрация на SQL Fiddle (превъртете надолу, тъй като има два набора резултати)
Редактиране Имаше грешка при четенето на въпроса, бях групирал само по идентификатор. Но са необходими два group_contacts, ако (Стойностите трябва да бъдат конкатенирани, групирани по име и идентификатор и след това върху всички по id). Предишният отговор беше
select
id,group_concat(concat(`name`,':',`value`) separator ',')
as Result from mytbl group by id
Можете да го видите внедрен тук:SQL Fiddle Демо