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 。まさに必要なもの。
更新 2つのステップに分割します。最初に、unique [Name、id]に対してすべての値(コンマ区切り)を持つテーブルを取得します。次に、取得したテーブルから、すべての名前と値を各一意のIDに対する単一の値として取得します。これについては、ここで説明されています SQLフィドルデモ (2つの結果セットがあるので下にスクロールします)
編集 質問を読むのに間違いがありました、私はidだけでグループ化しました。ただし、次の場合は2つのgroup_contactsが必要です(値は名前とIDでグループ化され、次にIDでグループ化されます)。 前の回答はでした
select
id,group_concat(concat(`name`,':',`value`) separator ',')
as Result from mytbl group by id
ここで実装されていることがわかります: SQLFiddleデモ