mysql中group_concat
类别:数据库 浏览量:469
时间:2016-7-3 mysql中group_concat
mysql中group_concat一、语法
GROUP_CONCAT([DISTINCT] expr [,expr ...] [ORDER BY {unsigned_integer | col_name | expr} [ASC | DESC] [,col_name ...]] [SEPARATOR str_val])
也可以简单的理解
group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])
二、group_concat连接字段的长度设置
1、查看服务器中设置
mysql> show variables like '%group_concat%';
+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| group_concat_max_len | 1024 |
+----------------------+-------+
1 row in set (0.00 sec)
以上设置的值说明当前是默认长度1KB
2、改变参数值
方法一:修改配置文件中参数,新增 group_concat_max_len = 10240
方法二:在会话中实现,全局或当前session中
SET GLOBAL group_concat_max_len=10240;
SET SESSION group_concat_max_len=10240;
三、mysql中group_concat函数的实例
1、实例数据
select * from aa;
+------+------+
| id| name |
+------+------+
|1 | 10|
|1 | 20|
|1 | 20|
|2 | 20|
|3 | 200 |
|3 | 500 |
+------+------+
6 rows in set (0.00 sec)
2、以id分组,把name字段的值打印在一行,逗号分隔(默认)
select id,group_concat(name) from aa group by id;
+------+--------------------+
| id| group_concat(name) |
+------+--------------------+
|1 | 10,20,20|
|2 | 20 |
|3 | 200,500|
+------+--------------------+
3 rows in set (0.00 sec)
3、以id分组,把name字段的值打印在一行,分号分隔
select id,group_concat(name separator ';') from aa group by id;
+------+----------------------------------+
| id| group_concat(name separator ';') |
+------+----------------------------------+
|1 | 10;20;20 |
|2 | 20|
|3 | 200;500 |
+------+----------------------------------+
3 rows in set (0.00 sec)
4、以id分组,把去冗余的name字段的值打印在一行,逗号分隔
select id,group_concat(distinct name) from aa group by id;
+------+-----------------------------+
| id| group_concat(distinct name) |
+------+-----------------------------+
|1 | 10,20|
|2 | 20 |
|3 | 200,500 |
+------+-----------------------------+
3 rows in set (0.00 sec)
5、以id分组,把name字段的值打印在一行,逗号分隔,以name排倒序
select id,group_concat(name order by name desc) from aa group by id;
+------+---------------------------------------+
| id| group_concat(name order by name desc) |
+------+---------------------------------------+
|1 | 20,20,10 |
|2 | 20|
|3 | 500,200|
+------+---------------------------------------+
3 rows in set (0.00 sec)
四、mysql中group_concat使用注意事项
1、int字段的连接陷阱
连接起来的字段如果是int型,一定要转换成char再拼起来,否则在你执行后返回的将不是一个逗号隔开的串,而是byte[]。
--例如:id 为整型
select group_concat(id) from t_ip 返回byte[]
select group_concat(CAST(id as char)) from t_dep 返回逗号隔开的串
select group_concat(Convert(id , char)) from t_dep 返回逗号隔开的串
2、group_concat的长度有限制
用group_concat连接字段的时候是有长度限制的,并不是有多少连多少。但是这个长度是可以设置的,可以使用group_concat_max_len系统变量,你可以设置允许的最大长度。
具体设置方法,详见本文第二点。
标签:mysql
您可能感兴趣
- mysql怎么建立主键外键(mysql 实现设置多个主键的操作)
- mysql锁机制及原理(MySQL锁阻塞的深入分析)
- idea关联mysql数据库(IDEA无法连接mysql数据库的6种解决方法大全)
- win10安装mysql8.0如何启动(win10下mysql 8.0.23 安装配置方法图文教程)
- mac的mysql连接问题如何解决(MAC 中mysql密码忘记解决办法)
- MySQL中ROUND四舍五入函数需要注意的地方
- mysql常用数据模型(MySQL数据库基于sysbench实现OLTP基准测试)
- mysql8.0.12安装教程图解(mysql 8.0.22 zip压缩包版免安装下载、安装配置步骤详解)
- redhat6.5安装mysql(Redhat7.3安装MySQL8.0.22的详细教程二进制安装)
- mysql改root密码命令(MySQL root密码的重置方法)
- mysql哪些配置影响性能
- mysql插入数据错误代码(教你解决往mysql数据库中存入汉字报错的方法)
- mysql触发器如何创建(MySQL 触发器的使用和理解)
- mysql演示事务提交(MySQL找出未提交事务的SQL实例浅析)
- mysql操作时间的函数(一篇文章搞定Mysql日期时间函数)
- key的用法归纳mysql(详解mysql中explain的type)
- 玩网游居然让人更友善 很难以让人置信(玩网游居然让人更友善)
- 学好汉语拼音,从娃娃绕口令抓起,平时还是要多练 收藏好(从娃娃绕口令抓起)
- 仙女们的私藏鲜法大PK 鲜香切块牛肉(仙女们的私藏鲜法大PK)
- 天热没胃口 这道菜开胃又下饭,2个小技巧新手一学就会(这道菜开胃又下饭)
- 指天椒紫苏爆炒牛肉(指天椒紫苏爆炒牛肉)
- 谷雨前,吃牛羊肉别忘了吃河鲜,除湿还清热,加紫苏一炒特解馋(吃牛羊肉别忘了吃河鲜)
热门推荐
- vuex数据持续化(Vuex数据持久化实现的思路与代码)
- MVC使用HandleErrorAttribute自定义异常
- dedecms织梦阁模板(dedecms英文模板 英文网站程序的选择)
- dockerswarm网络架构(docker swarm外部验证负载均衡时不生效的解决方案)
- python3 怎么查看函数用法(Python3 max函数基础用法)
- 谷歌浏览器调试工具中sources面板
- 云服务器的安全问题(云服务器如何提高安全组性能?)
- mysql触发器语法规则(MySQL 触发器的使用及需要注意的地方)
- dedecms中的有些功能如何修改(织梦DEDECMS中用JS方式调用评论总数的技巧)
- MySQL中NULL和空值的区别
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9