我需要在mysql中使用逗号分隔值将非主键列展平为一行。我们举一个简单的例子。有一个名为stud_sub的表,其中stud_id和sub_id作为复合主键。现在我想要一个表,其中stud_id将是主键,sub_ids将是由逗号分隔的行中的值,如stud_sub_flat表中所示。
stud_sub
----------
stud_id sub_id
1 1
1 2
1 3
2 1
2 2
3 2
3 3
stud_sub_flat
-------------
stud_id sub_id
1 1,2,3
2 1,2
3 2,3
有没有办法实现它?
答案 0 :(得分:4)
试试吧
select stud_id, group_concat(sub_id) as sub_ids from stud_sub group by stud_id
此选择提供您想要的输出。
此选择查询输出使用插入选择查询存储在表stud_sub_flat
中。
insert into stud_sub_flat (stud_id,sub_id)
select stud_id, group_concat(sub_id) as sub_ids from stud_sub group by stud_id