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;
Anda dapat melihatnya diimplementasikan di sini :Demo Sql Fiddle . Persis seperti yang Anda butuhkan.
Perbarui Pemisahan dalam dua langkah. Pertama kita mendapatkan tabel yang memiliki semua nilai (dipisahkan koma) terhadap [Nama,id] yang unik. Kemudian dari tabel yang diperoleh kami mendapatkan semua nama dan nilai sebagai nilai tunggal terhadap setiap id unik. Lihat ini dijelaskan di sini Demo Fiddle SQL (gulir ke bawah karena memiliki dua set hasil)
Sunting Ada kesalahan dalam membaca soal, saya hanya mengelompokkan berdasarkan id. Tetapi dua group_contacts diperlukan jika (Nilai akan digabungkan dikelompokkan berdasarkan Nama dan id dan kemudian semuanya berdasarkan id). Jawaban sebelumnya adalah
select
id,group_concat(concat(`name`,':',`value`) separator ',')
as Result from mytbl group by id
Anda dapat melihatnya diimplementasikan di sini :Demo SQL Fiddle