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 Demo。まさにあなたが必要とするもの。
Splitting を 2 つのステップで更新します。最初に、unique[Name,id] に対してすべての値 (カンマ区切り) を持つテーブルを取得します。次に、取得したテーブルから、すべての名前と値を一意の ID ごとに 1 つの値として取得します。こちらで説明されているSQL Fiddle Demoを参照してください(結果セットが 2 つあるため、下にスクロールします)
編集質問の読み方に誤りがありました。id だけでグループ化していました。ただし、値を連結して名前と ID でグループ化し、さらに ID でグループ化する場合は、2 つの group_contacts が必要です。前回の回答は
select
id,group_concat(concat(`name`,':',`value`) separator ',')
as Result from mytbl group by id
ここで実装されていることがわかります:SQL Fiddle Demo