博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql group_concat合并行用法和问题
阅读量:6934 次
发布时间:2019-06-27

本文共 1286 字,大约阅读时间需要 4 分钟。

还有分隔符还可以自定义,默认是以“,”作为分隔符,若要改为“|||”,则使用SEPARATOR来指定,
例如:
mysql> SELECT student_id, GROUP_CONCAT(courses_id SEPARATOR '|||') AS courses FROM student_courses WHERE student_id=2 GROUP BY student_id;
 
除此之外,还可以对这个组的值来进行排序再连接成字符串,例如按courses_id降序来排:
mysql> SELECT student_id, GROUP_CONCAT(courses_id ORDER BY courses_id DESC) AS courses FROM student_courses WHERE student_id=2 GROUP BY student_id;
1.int字段的连接陷阱 当你用group_concat的时候请注意,连接起来的字段如果是int型,一定要转换成char再拼起来, 否则在你执行后(ExecuteScalar或者其它任何执行SQL返回结果的方法)返回的将不是一个逗号隔开的串, 而是byte[]。 该问题当你在SQLyog等一些工具中是体现不出来的,所以很难发现。
select group_concat(ipaddress) from t_ip 返回逗号隔开的串
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 返回逗号隔开的串
附Cast,convert的用法:
CAST(expr AS type), CONVERT(expr,type) , CONVERT(expr USING transcoding_name)
CAST() 和CONVERT() 函数可用来获取一个类型的值,并产生另一个类型的值。 这个类型 可以是以下值其中的 一个: BINARY[(N)] CHAR[(N)] DATE DATETIME DECIMAL SIGNED [INTEGER] TIME UNSIGNED [INTEGER]
2.长度陷阱 用group_concat连接字段的时候是有长度限制的,并不是有多少连多少。但你可以设置一下。
使用group_concat_max_len系统变量,你可以设置允许的最大长度。
程序中进行这项操作的语法如下,其中 val 是一个无符号整数: SET [SESSION | GLOBAL] group_concat_max_len = val;
若已经设置了最大长度, 则结果被截至这个最大长度。 在SQLyog中执行 SET GLOBAL group_concat_max_len = 10 后,
重新打开SQLyog,设置就会生效。

转载地址:http://dwqjl.baihongyu.com/

你可能感兴趣的文章
Git获取某个分支的特定文件夹或者文件
查看>>
vue+iview打包报错Unexpected token: punc (()
查看>>
iOS CoreText类库的详细介绍
查看>>
交叉编译openssl不修改Makefile的方法
查看>>
cas 单点登录
查看>>
java解压缩单个文件
查看>>
《编写可读代码的艺术》读书笔记03
查看>>
google似乎把ADB输出的回车换行问题改掉了
查看>>
java 读取JPEG图像的Exif信息
查看>>
Golang面试题解析(二)
查看>>
Elasticsearch 2.3.0 安装成服务
查看>>
UIkit 分页组件动态加载简单实现
查看>>
【工具使用系列】关于 MATLAB HDL Coder, 你需要知道的事
查看>>
演讲实录 | 招银云创:容器PaaS正在让开发人员再也看不到IaaS
查看>>
Spring+Mybatis之多数据源配置
查看>>
阿里数据库专家博客
查看>>
jetty插件java.lang.OutOfMemoryError: PermGen space内存溢出
查看>>
使用 Shell 转换 Linux 目录下的所有其他编码文本文件转为UTF-8编码
查看>>
twisted 线程池管理
查看>>
利用shell + python + expect实现类似xshell功能(测试环境:ubuntu)
查看>>