在mysql/ target=_blank class=infotextkey>mysql数据库中,如何将表的几列合并到一行显示。
例如:
id name subject
1 小王 语文
2 小王 语文
3 小张 数学
4 小王 英语
我们想查询每个人有哪些课程 显示方式如
小王 语文,英文,语文
小明 语文
可能以前对于大部分人来说,先查询name,然后再分别由名称查询course【我以前也是这样做的】。
其实对于mysql数据库都支持将列合并到一行显示,即group_concat 函数,
group_concat 必须与 group by 一起使用
例子:
可以看到我们在group_concat 函数中可以使用distinct,order by等以前使用
而separator则是显示使用什么样的链接字符。
对于以上查询可以
如果出现小王有两条语文课的记录,连接只想查询这样的结果,如何实现:
小王
语文,英文
小明
语文
可以使用distinct的函数 使用方法如下。
按课程排序,可以使用order by
注意,对于group_concat函数来说默认是有连接字符长度的限制。
它有系统变量group_concat_max_len限制,默认长度只有1024,如果超出1024将会被截取掉。
怎么样增大group_concat_max_len 的大小。
set [global | session] group_concat_max_len = val;
global设置全局group_concat_max_len,数据库不重启一直有效。
session设置当前会话group_concat_max_len,会话结束失效。
val设置的长度,自定义: