最近有遇到这样一个问题,将数据库中查询得到的数据根据其他共同信息字段将某字段进行整合,即将多行数据连接成为一行,从而简化了查询结果,结果更加简洁方便
这里我们介绍一个函数:group_concat 函数进行聚合查询
group_concat 函数是MySQL提供的一种聚合函数,它可以将多行数据通过指定的分隔符合并成一行
GROUP_CONCAT([DISTINCT] column_name [,column_name ...]
[ORDER BY {unsigned_integer | col_name | expr}
[ASC | DESC] [SEPARATOR 'separator_string']])
这里我们结合实例进行分析,原始表格数据信息:
group_concat 函数主要使用步骤为
- 首先通过 group by 将数据分组,需要依据分组再对某个字段进行整合,如果不使用group by字段进行分组,group_concat函数则不知道按照什么规则去整合该字段,查询语句也会报错
- 使用 group_concat() 函数,包含需要整合的字段,结果会将该字段所有值连接成为一个值
详细用法:
- 使用 DISTINCT 关键字对需要整合字段的值去重,例如同一个分组中需要整合的字段存在多个相同的值(a1,a2,a2),则可以使用distinct关键字对需要整合的字段去重(a1,a2)
- 使用 order by 函数对需要整合字段的值进行排序
- 使用 separator 关键字指定整合字段的值之间的连接符号,默认连接符号为逗号","
- group_concat 函数中可以同时选择多个需要连接的字段,也可指定相同分组中的不同字段之间连接的符号,默认无符号直接连接
使用逗号连接相同分组中的不同字段
总结:
- group_concat 函数适用于将多行转为一行的情况
- 实际情况适用于对于统计一个部门中员工情况,或者一个班级的学生情况
- 使用该函数可以将大量重复字段进行聚合,从何使得查询结果更加简洁方便