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 函数详解相关推荐

  1. mysql中group concat_mysql中group_concat()函数的使用方法总结

    本文实例讲述了mysql group_concat()函数用法.分享给大家供大家参考,具体如下: group_concat(),手册上说明:该函数返回带有来自一个组的连接的非NULL值的字符串结果.比 ...

  2. group_concat函数详解

    https://blog.csdn.net/ys410900345/article/details/44828571 问了好多人,都不知道group_concat这个函数. 这个函数好啊,能将相同的行 ...

  3. mysql之group_concat函数详解

    group_concat语法如下 group_concat( [DISTINCT]  要连接的字段  [Order BY 排序字段 ASC/DESC]  [Separator '分隔符'] ) 1.m ...

  4. mysql日期教程_MySQL日期函数详解

    Mysql作为一款开元的免费关系型数据库,用户基础非常庞大,本文列出了MYSQL常用日期函数与日期转换格式化函数,希望能帮助到大家. 1.DAYOFWEEK(date) SELECT DAYOFWEE ...

  5. mysql ceil_MySQL笔记之数学函数详解_MySQL - ceil

    以下是对PHP中的取整函数:ceil,floor,round,intval的区别进行了详细的介绍,需要的朋友可以过来参考下我们经常用到的PHP取整函数,主要是:ceil,floor,round,int ...

  6. MySQL中date()函数详解

    本篇文章主要介绍SQL语句中的时间函数的用法,包括:now,curdate,curtime,date,extract,date_add,date_sub,DATEDIFF,DATE_FORMAT一共9 ...

  7. MySQL 快速入门之DATE_FORMAT() 函数详解

    目录 一:定义和用法 语法 二:实例 一:定义和用法 DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据. 语法 DATE_FORMAT(date,format) date 参数是合法 ...

  8. MySQL 快速入门之 MID() 函数详解

    目录 一:基本概念 语法: 二: 实例 一:基本概念 MID 函数用于从文本字段中提取字符. 语法: SELECT MID(column_name,start[,length]) FROM table ...

  9. mysql的聚合函数综合案例_MySQL常用聚合函数详解

    一.AVG AVG(col) 返回指定列的平均值 二.COUNT COUNT(col) 返回指定列中非NULL值的个数 三.MIN/MAX MIN(col):返回指定列的最小值 MAX(col):返回 ...

最新文章

  1. NB-IoT与eMTC差异全解析
  2. K-means算法、高斯混合模型 matlab
  3. SLAM:VSLAM简介之详细攻略
  4. java spark读写hdfs_Spark读取HDFS数据输出到不同的文件
  5. Linux NAT设定
  6. 预见2021-罗兰贝格中国行业趋势报告
  7. 3682: Phorni 后缀平衡树 线段树
  8. python threading.Condition
  9. python 闭包的作用_python中对闭包的理解
  10. 算法:全一子串的数量 或 全零子串的数量 1513. Number of Substrings With Only 1s
  11. 开启snapshot的操作失败 如何解决——两种办法
  12. Linux虚拟机CentOS7挂机问题
  13. Imperva是什么
  14. Vue-2-计算属性、侦听器、过滤器、样式绑定
  15. 企业非法集资风险预测
  16. 18、HTTP基本操作及源码编译安装 学习笔记
  17. android源码大全 IOS游戏源代码打包下载 小游戏|视频教程 微信小程序源码带后台全套|公众号平台
  18. 什么!作为程序员你连英文版的官方文档都看不懂?
  19. Sqoop——MySQL_to_HDFS的脚本详解
  20. verilog中initial语句的基本使用

热门文章

  1. list c++template
  2. 如何让自己的内心强大起来
  3. Docker 制作镜像的方式
  4. maven的web工程打包为war并部署到服务器
  5. 舒适的路线(codevs 1001)
  6. MySQL 调优基础(三) Linux文件系统
  7. 如何用参数化SQL语句污染你的计划缓存
  8. Magento--修改已存在的订单的运费
  9. 安装 VMware Tools
  10. Spring中的动态代理