这篇文章主要介绍了 mysql group_concat() 函数用法, 结合实例形式较为详细的 group_concat() 函数的功能、使用方法与相关注意事项, 需要的朋友可以参考下
MySQL 是一个开放源码的小型关联式数据库管理系统,开发者为瑞典 MySQL AB 公司。MySQL 被广泛地应用在 Internet 上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了 MySQL 作为网站数据库。
本文实例讲述了 mysql group_concat() 函数用法。分享给大家供大家参考,具体如下:
group_concat(),手册上说明: 该函数返回带有来自一个组的连接的非 NULL 值的字符串结果。比较抽象,难以理解。
通俗点理解,其实是这样的:group_concat()会计算哪些行属于同一组,将属于同一组的列显示出来。要返回哪些列,由函数参数 (就是字段名) 决定。分组必须有个标准,就是根据 group by 指定的列进行分组。
group_concat 函数应该是在内部执行了 group by 语句,这是我的猜测。
1. 测试语句:
- SELECT group_concat(town) FROM `players` group by town
结果去查找 town 中去查找哪些值是一样的,如果相等,就全部列出来,以逗号分割进行列出,如下:
group_concat(town)
北京, 北京
长沙
2. 测试:
- SELECT group_concat( town )
- FROM players
结果:
group_concat(town)
长沙, 北京, 北京,
上面是否可以证明,group_concat 只有与 group by 语句同时使用才能产生效果? 下面进行了实际测验
3. 测试常量对 group_concat() 的配置影响:
- SET @@GROUP_CONCAT_MAX_LEN=4
手册中提到设置的语法是这样的:
- SET [SESSION | GLOBAL] group_concat_max_len = val;
两种有什么区别?
- SET @@global.GROUP_CONCAT_MAX_LEN=4;
global 可以省略,那么就变成了:SET @@GROUP_CONCAT_MAX_LEN=4;
4. 使用语句
- SELECT group_concat(town) FROM `players`
结果得到:
group_concat(town)
长沙, 北京, 长沙, 北京
结论:group_concat() 函数需要与 group by 语句在一起使用,才能得到需要的效果。
原因可以这样理解:group_concat()得到是属于 x 组的所有成员 (函数里面列参数指定需要显示哪些字段)。x 组从哪里来?如果没有 group by 进行指定,那么根本不知道 group_concat() 根据哪个分组进行显示出成员。 所以,像上面没有 group by 子句的时候,就显示了长沙和北京。
实际中什么时候需要用到这个函数?
假如需要查询的结果是这样:左边显示组名,右边想显示该组别下的所有成员信息。用这个函数,就可以省去很多事情了。
另外,假如我这样使用:SELECT group_concat(name, sex) FROM `players` town。意义不大。group_concat() 指定一个列是最好的情况。如果指定了多个列。那么显示结果类似这样:
- group_concat(name,sex)
王滔, 王小明男, 刘惠女, 舒明女
希望本文所述对大家 MySQL 数据库计有所帮助。
来源: http://www.phperz.com/article/17/0324/232620.html