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;
Sie können es hier implementiert sehen:Sql Fiddle Demo . Genau das, was Sie brauchen.
Aktualisieren Splitten in zwei Schritten. Zuerst erhalten wir eine Tabelle mit allen Werten (durch Komma getrennt) gegen einen eindeutigen [Name, ID]. Dann erhalten wir aus der erhaltenen Tabelle alle Namen und Werte als einen einzelnen Wert für jede eindeutige ID. Siehe dies hier erklärt SQL-Fiddle-Demo (Scrollen Sie nach unten, da es zwei Ergebnissätze hat)
Bearbeiten Es gab einen Fehler beim Lesen der Frage, ich hatte nur nach ID gruppiert. Aber zwei group_contacts werden benötigt, wenn (Werte sollen gruppiert nach Name und ID und dann insgesamt nach ID verkettet werden). Vorherige Antwort war
select
id,group_concat(concat(`name`,':',`value`) separator ',')
as Result from mytbl group by id
Sie können es hier implementiert sehen:SQL Fiddle Demo