在mysql

时间:2015-12-17 07:06:25

标签: mysql sql database

我需要在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

有没有办法实现它?

1 个答案:

答案 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

参考:group_concat()Insert .... select