在开发中我们很多的时候都存在这样的问题。将表的几列合并到一行显示。
例如
ID
NAME
SUBJECT
1
小王
语文
2
小王
语文
3
小张
数学
4
小王
英语
我们想查询每个人有哪些课程 显示方式如
小王
语文,英文,语文
小明
语文
可能以前对于大部分人来说,先查询NAME,然后再分别由名称查询COURSE【我以前也是这样做的】。
其实对于mysql数据库都支持将列合并到一行显示,即group_concat 函数,
group_concat 必须与 group by 一起使用
完整句法如下:
GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] [,col ...]]
[SEPARATOR str_val])
可以看到我们在group_concat 函数中可以使用distinct,order by等以前使用
而separator则是显示使用什么样的链接字符。
对于以上查询我们可以
select name, GROUP_CONCAT( `subject` separator ',' ) from test group by name
如果里面出现小王有两条语文课的记录我们连接只想查询这样的结果呢