mysql group concat_MySQL 的 GROUP_CONCAT 函数详解
GROUP_CONCAT(expr) 函数会从 expr 中连接所有非 NULL 的字符串。如果没有非 NULL 的字符串,那么它就会返回 NULL。语法如下:
GROUP_CONCAT 语法规则
它在递归查询中用的比较多,但要使用好它并不容易。所以让我们一起来看看吧:
假设有这样一张领接表模型的树型表 t_region,它的基本结构如下:
字段
类型
大小
说明
REGION_ID
int
11
行政地区ID
PARENT_ID
int
11
上级行政地区ID
1 使用示例
【1】以逗号最为默认的连接字符
SELECT GROUP_CONCAT(a.REGION_ID) FROM t_region a;
连接所有非 NULL 的字符串
【2】可以使用 DISTINCT 过滤重复的值,也可以加入 ORDER BY 对值进行排序,还可以使用 SEPARATOR 指定分隔符:
SELECT GROUP_CONCAT( DISTINCT a.REGION_ID ORDER BY a.REGION_ID DESC SEPARATOR ' ')
FROM t_region a;
加入 DISTINCT 、 ORDER BY 与 SEPARATOR
这里的返回值以过滤了重复值,并且倒序排序,还使用了空格作为分隔符。
2 最大值限制
GROUP_CONCAT() 是有最大长度限制的,默认值是 1024。
可以通过 group_concat_max_len 参数进行动态设置。参数范围可以是 Global 或 Session。
设置语法如下:
修改 group_concat_max_len 参数
值是无符号整型,最大值与版本位数有关:
版本
最小值
最大值
32 位
4
4294967295
64 位
4
18446744073709551615
如果 group_concat_max_len 的值被设置为小等于 512,那么 GROUP_CONCAT 的返回值类型是 VARCHAR 或 VARBINARY;否则是 TEXT 或 BLOB。
实际上,group_concat_max_len 的值可以设的更大,但会受到参数max_allowed_packet 的限制。
很多人不知道这一点,因为它只有在数据量较大的情况下才会出现。
【1】使用默认值的情况:
SELECT GROUP_CONCAT(a.REGION_ID) FROM t_region a;
使用默认值的返回结果
可以看出,当总长度达到 1024 后,后面的记录就被截断掉咯。
【2】group_concat_max_len 设置为最大值:
SET SESSION group_concat_max_len=18446744073709551615;
SELECT GROUP_CONCAT(a.REGION_ID) FROM t_region a;
group_concat_max_len 设置为最大值的返回结果
这样设置之后,一般情况下,GROUP_CONCAT 就不会再出现字符串被截断的情况啦O(∩_∩)O~
mysql group concat_MySQL 的 GROUP_CONCAT 函数详解相关推荐
- mysql中group concat_mysql中group_concat()函数的使用方法总结
本文实例讲述了mysql group_concat()函数用法.分享给大家供大家参考,具体如下: group_concat(),手册上说明:该函数返回带有来自一个组的连接的非NULL值的字符串结果.比 ...
- group_concat函数详解
https://blog.csdn.net/ys410900345/article/details/44828571 问了好多人,都不知道group_concat这个函数. 这个函数好啊,能将相同的行 ...
- mysql之group_concat函数详解
group_concat语法如下 group_concat( [DISTINCT] 要连接的字段 [Order BY 排序字段 ASC/DESC] [Separator '分隔符'] ) 1.m ...
- mysql日期教程_MySQL日期函数详解
Mysql作为一款开元的免费关系型数据库,用户基础非常庞大,本文列出了MYSQL常用日期函数与日期转换格式化函数,希望能帮助到大家. 1.DAYOFWEEK(date) SELECT DAYOFWEE ...
- mysql ceil_MySQL笔记之数学函数详解_MySQL - ceil
以下是对PHP中的取整函数:ceil,floor,round,intval的区别进行了详细的介绍,需要的朋友可以过来参考下我们经常用到的PHP取整函数,主要是:ceil,floor,round,int ...
- MySQL中date()函数详解
本篇文章主要介绍SQL语句中的时间函数的用法,包括:now,curdate,curtime,date,extract,date_add,date_sub,DATEDIFF,DATE_FORMAT一共9 ...
- MySQL 快速入门之DATE_FORMAT() 函数详解
目录 一:定义和用法 语法 二:实例 一:定义和用法 DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据. 语法 DATE_FORMAT(date,format) date 参数是合法 ...
- MySQL 快速入门之 MID() 函数详解
目录 一:基本概念 语法: 二: 实例 一:基本概念 MID 函数用于从文本字段中提取字符. 语法: SELECT MID(column_name,start[,length]) FROM table ...
- mysql的聚合函数综合案例_MySQL常用聚合函数详解
一.AVG AVG(col) 返回指定列的平均值 二.COUNT COUNT(col) 返回指定列中非NULL值的个数 三.MIN/MAX MIN(col):返回指定列的最小值 MAX(col):返回 ...
最新文章
- NB-IoT与eMTC差异全解析
- K-means算法、高斯混合模型 matlab
- SLAM:VSLAM简介之详细攻略
- java spark读写hdfs_Spark读取HDFS数据输出到不同的文件
- Linux NAT设定
- 预见2021-罗兰贝格中国行业趋势报告
- 3682: Phorni 后缀平衡树 线段树
- python threading.Condition
- python 闭包的作用_python中对闭包的理解
- 算法:全一子串的数量 或 全零子串的数量 1513. Number of Substrings With Only 1s
- 开启snapshot的操作失败 如何解决——两种办法
- Linux虚拟机CentOS7挂机问题
- Imperva是什么
- Vue-2-计算属性、侦听器、过滤器、样式绑定
- 企业非法集资风险预测
- 18、HTTP基本操作及源码编译安装 学习笔记
- android源码大全 IOS游戏源代码打包下载 小游戏|视频教程 微信小程序源码带后台全套|公众号平台
- 什么!作为程序员你连英文版的官方文档都看不懂?
- Sqoop——MySQL_to_HDFS的脚本详解
- verilog中initial语句的基本使用