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;
Je kunt het hier geïmplementeerd zien:Sql Fiddle Demo . Precies wat je nodig hebt.
Bijwerken Splitsen in twee stappen. Eerst krijgen we een tabel met alle waarden (gescheiden door komma's) tegen een unieke [Naam,id]. Vervolgens krijgen we uit de verkregen tabel alle namen en waarden als een enkele waarde tegen elke unieke id. Zie dit hier uitgelegd SQL Fiddle-demo (scroll naar beneden aangezien het twee resultaatsets heeft)
Bewerken Er was een fout bij het lezen van de vraag, ik had alleen gegroepeerd op id. Maar er zijn twee group_contacts nodig als (de waarden moeten worden samengevoegd, gegroepeerd op naam en id en dan in het algemeen op id). Vorige antwoord was
select
id,group_concat(concat(`name`,':',`value`) separator ',')
as Result from mytbl group by id
Je kunt het hier geïmplementeerd zien:SQL Fiddle Demo