工作好几年了,这句sql函数还是第一次使用(说来惭愧。。。)
场景描述:单表一对多查询,将多条记录合为一条,用逗号隔开;
需求描述:有一张图书借阅表,分别是姓名,图书名称,一句sql查询学生借了几本书,分别是什么。(*注意是一句sql*)
这时大家都会想到利用group by 对姓名进行分组查询到学生借了几本书
select name,count(name) as count from books group by name
但是怎么可以把借的图书名称进行字符串拼接也显示出来? 这时就用到了group_concat(),默认是逗号分割
group_concat()
完整语法如下:
GROUP_CONCAT(DISTINCT expression
ORDER BY expression
SEPARATOR sep);
-- 通过 distinct可以去掉重复值,order by进行排序,separator指定分隔符,默认为逗号。