MYSQL的GROUP_CONCAT函数

495 查看

函数作用

用到group by时, 能将相同的行组合起来。

函数语法

group_concat( [DISTINCT] 要连接的字段 [Order BY 排序字段 ASC/DESC] [Separator '分隔符'] )

例子

比如我们有一个商品规格表,我想在后台看到不同种类的商品都有哪些规格,id代表商品种类,spec代表商品规格


商品规格表

id  |  spec  
1   |  黄色  
1   |  绿色
3   |  100g 
3   |  60g
4   |  38m

那么我们就可以这么写
以id分组,把spec字段的值打印在一行,按照spec倒序排列


select id,group_concat(spec order by spec) from 规格表 group by id;  
|1 | 黄色,绿色|
|3 | 60g,100g|
|4 | 38m|

默认是以逗号分隔,我们也可以改成分号

select id,group_concat(spec separator ';') from 规格表 group by id;  
|1 | 黄色;绿色|
|3 | 60g;100g|
|4 | 38m|

补充:

还可以用distinct去掉重复的数值,也可以多个字段拼接

感受:

这个函数不复杂,只是感觉应该会经常用到,以前总是习惯筛选之后用程序拼接,其实有些多余了.
使用场景视具体情况而定,这个都不是绝对的。希望对大家有帮助。