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为什么优选innodb(如何区分MySQL的innodb_flush_log_at_trx_commit和sync_binlog)
- mysql默认的事务隔离级别是哪一种(MySql学习笔记之事务隔离级别详解)
- mysql读写分离代码实现(MySQL Router实现MySQL的读写分离的方法)
- mysql备份工具怎么选(MySQL使用Xtrabackup备份流程详解)
- mysqlorder工作原理(详解Mysql order by与limit混用陷阱)
- key的用法归纳mysql(详解mysql中explain的type)
- centos7怎么安装mysql(Centos7 mysql数据库安装及配置实现教程)
- mysql在centos7中如何安装(阿里云centos7安装mysql8.0.22的详细教程)
- mysql修改表内字段的数据类型(mysql修改记录时update操作 字段=字段+字符串)
- php7用什么替代mysql(mysqli扩展无法在PHP7下升级问题的解决)
- mysql程序中判断select返回空值(解决MySQL读写分离导致insert后select不到数据的问题)
- mysql 存储引擎有哪些(MySQL 常见存储引擎的优劣)
- mysql索引原理和优化(Mysql 索引该如何设计与优化)
- 如何正常查看mysql存储数据文件(Mysql文件存储图文详解)
- windows 安装解压版 mysql5.7.28 winx64的详细教程(windows 安装解压版 mysql5.7.28 winx64的详细教程)
- windows7mysql服务无法启动(Windows系统下MySQL无法启动的万能解决方法)
- 宁夏灵武恐龙化石发现始末(宁夏灵武恐龙化石发现始末)
- 到了岁末 临门一脚 节点,天台综合督评会目标直指 全年红(到了岁末临门一脚)
- 寒假余额不满24小时,不如来一场说走就走的亲子阅读之旅(寒假余额不满24小时)
- 省委书记出席的交流会,十位县委书记同场发言,代表公文材料的高水平(省委书记出席的交流会)
- 《刘老根3》热播,去世15年的她却再次被 伤害(去世15年的她却再次被)
- 十二星座爱情支配欲指数(十二星座爱情支配欲指数)
热门推荐
- js return false的作用
- h5css3图片旋转(怎样实现H5+CSS3手指滑动切换图片的示例代码)
- 一分钟看懂响应式编程(浅谈Rx响应式编程)
- 5.6以上版本mysql数据复制(MySQL5.7并行复制原理及实现)
- 如何去阿里云解析域名(利用Python+阿里云实现DDNS动态域名解析的方法)
- python怎么用pandas读取两列数据(python 利用pandas将arff文件转csv文件的方法)
- mysql将字符串转换为日期的函数(Mysql中时间戳转为Date的方法示例)
- css3常用特性(css3学习之2D转换功能详解)
- python 摄像头运用(使用Python控制摄像头拍照并发邮件)
- vue 中后台管理系统(Vue实现学生管理功能)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9