mysql行转列

案例

class表

student表

执行关联查询:

select a.cname,b.sname from  class a,student b where a.cid=b.cls_id order by a.cname,b.sname

执行结果:

但现在只想出现2个班级,学生姓名在一行显示,代码如下:

select a.cname,group_concat(b.sname) from  class a,student b where a.cid=b.cls_id group by a.cname order by a.cname,b.sname

执行结果:

group_concat

group_concat( 
    [distinct] 要连接的字段 [order by 排序字段 asc/desc  ] [separator '分隔符']
);

长度限制

处理字符串的长度是受限制的,默认长度为 1024,如果拼接的字符串超过1024,就会在数据库里面被截取,不会显示所有拼接数据;

设置当前session的group_concat长度,其他session连接不受影响:

SET SESSION group_concat_max_len = 102400;

设置全局group_concat长度:

SET GLOBAL group_concat_max_len = 102400;

例子

设置分隔符

select a.cname,group_concat(b.sname separator '、') as 学生 from  class a,student b where a.cid=b.cls_id group by a.cname order by a.cname,b.sname

感谢:
http://blog.csdn.net/sinat_27406925/article/details/77507478


原文出处:/show_1EFFV5YOTlp.html