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 演示 http://sqlfiddle.com/#!9/42f994/1。正是您所需要的。
分两步解释首先,我们得到一个表,其中所有值(逗号分隔)都针对唯一的[Name,id]。然后,从获得的表中,我们将所有名称和值作为针对每个唯一 id 的单个值
请参阅此处的解释SQL 小提琴演示 http://sqlfiddle.com/#!9/42f994/4(向下滚动,因为它有两个结果集)
Edit阅读问题时出错,我只按 id 分组。但是,如果(值要按名称和 id 分组,然后按 id 分组),则需要两个 group_contacts。之前的答案是
select
id,group_concat(concat(`name`,':',`value`) separator ',')
as Result from mytbl group by id
你可以在这里看到它的实现:SQL 小提琴演示 http://sqlfiddle.com/#!9/42f994/3