mysql group concat_MySQL 的 GROUP_CONCAT 函数详解

GROUP_CONCAT(expr) 函数会从 expr 中连接所有非 NULL 的字符串。如果没有非 NULL 的字符串,那么它就会返回 NULL。语法如下:

447eb01eebb2

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;

447eb01eebb2

连接所有非 NULL 的字符串

【2】可以使用 DISTINCT 过滤重复的值,也可以加入 ORDER BY 对值进行排序,还可以使用 SEPARATOR 指定分隔符:

SELECT GROUP_CONCAT( DISTINCT a.REGION_ID ORDER BY a.REGION_ID DESC SEPARATOR ' ')

FROM t_region a;

447eb01eebb2

加入 DISTINCT 、 ORDER BY 与 SEPARATOR

这里的返回值以过滤了重复值,并且倒序排序,还使用了空格作为分隔符。

2 最大值限制

GROUP_CONCAT() 是有最大长度限制的,默认值是 1024。

可以通过 group_concat_max_len 参数进行动态设置。参数范围可以是 Global 或 Session。

设置语法如下:

447eb01eebb2

修改 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;

447eb01eebb2

使用默认值的返回结果

可以看出,当总长度达到 1024 后,后面的记录就被截断掉咯。

【2】group_concat_max_len 设置为最大值:

SET SESSION group_concat_max_len=18446744073709551615;

SELECT GROUP_CONCAT(a.REGION_ID) FROM t_region a;

447eb01eebb2

group_concat_max_len 设置为最大值的返回结果

这样设置之后,一般情况下,GROUP_CONCAT 就不会再出现字符串被截断的情况啦O(∩_∩)O~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/454928.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ORACLE数据库 常用命令和Sql常用语句

ORACLE 账号相关 如何获取表及权限 1.COPY表空间backup scottexp登录管理员账号system2.创建用户 create user han identified(认证) by mima default tablespace users(默认的表空间) quota(配额)10M on users;创建账号分配权限g…

光荣之路测试开发面试linux考题之四:性能命令

Hi,大家好我是tom,I am back.今天要给大家讲讲linux系统一些性能相关命令。 1.fdisk 磁盘管理 是一个强大的危险命令,所有涉及磁盘的操作都由该命令完成,包括:新增磁盘、增删改磁盘分区等。 1.fdisk -l 查看磁盘分区情况 Disk /dev/sda: 27.8…

一起学并发编程 - 优雅关闭

Java中原来在Thread中提供了stop()方法来终止线程&#xff0c;但这个方法是不安全的&#xff0c;所以一般不建议使用。文本将介绍两种可以优雅的终止线程的方式...<!-- more --> 第一种 在JAVA《Java多线程模式》中有一种叫Two-Phase Termination&#xff08;两步终止&am…

mac安装完mysql后关机特别慢_mysql-Mac终端下遇到的问题总结

为了方便启动mysql服务&#xff0c;修改/etc/.bash_profile文件&#xff0c;如下alias mysql"/usr/local/mysql/bin/mysql"alias mysqladmin"/usr/local/mysql/bin/mysqladmin"或者alias mysqlstart"sudo /usr/local/mysql/support-files/mysql.serve…

sending data mysql slow Mysql查询非常慢的可能原因

1.用explain看看mysql的执行情况,可以得知,task_id扫描了近20万条数据,而且这个task_id不是索引 2.为这个task_id所在的表,将此字段添加索引后,查询就变得很快了 转载于:https://www.cnblogs.com/Skrillex/p/7365590.html

mybatis 添加语句返回对象_mybatis的insert语句插入数据时的返回值的实现

mybatis的insert语句插入数据时的返回值的实现,语句,返回值,那条,都是,站长站mybatis的insert语句插入数据时的返回值的实现易采站长站&#xff0c;站长之家为您整理了mybatis的insert语句插入数据时的返回值的实现的相关内容。mybatis的sql语句一般是配置在配置文件中&#xf…

打包上架

昨天写的打包上架&#xff0c;分组到了文章&#xff0c;发现不便查看贴链接到这里&#xff1a; http://www.cnblogs.com/ITCoderW/articles/7597969.html 最近一个版本的审核的过程 当我们上传到APP Store一个新的版本后 登录ITunes Connect就可以看到相应的版本的审核的状态 粗…

inet_pton函数和inet_ntop函数的用法及简单实现

http://blog.csdn.net/eagle51/article/details/53157643?utm_sourceitdadao&utm_mediumreferral 这两个函数是随IPv6出现的新函数&#xff0c;对于IPv4地址和IPv6地址都适用。函数名中的p和n非别代表表达&#xff08;presentation&#xff09;和数值&#xff08;numeric&…

mysql 5.7 延迟同步_MySQL5.6升级5.7时出现主从延迟问题排查过程

最近在做zabbix的数据库MySQL5.6升级5.7时&#xff0c;出现主从延迟问题&#xff0c;这个问题困扰了很久没有解决&#xff0c;昨天终于解决了&#xff0c;整理了一下整个排查过程&#xff0c;分享给大家。环境说明&#xff1a;mysql主库为5.6的版本&#xff0c;有四个从库&…

架构设计--仅是软件开发之第二大影响力?!

SDWest2006&#xff08;译注1&#xff09;对我来说是个有趣的大会。我除了星期三之外&#xff08;当时我正飞往费城参加一个客户会议 因此错过了Jolt颁奖部分&#xff09;每天都在演讲。我也参加了一些谈话和会议&#xff1b;其中最引人关注的是Mike Cohn的计划与估算的谈话。…

WiFi密码分享有妙招 不必口头相传

移动互联网的迅速崛起&#xff0c;使得我们可以方便的使用手持移动设备进行上网。尤其是在家庭中&#xff0c;使用智能手机、平板电脑、笔记本电脑等移动设备进行上网和娱乐已经成为主流&#xff0c;台式机上网正日渐式微。在家中时&#xff0c;我们通过无线路由器提供的WiFi网…

javaweb(二十一)——JavaWeb的两种开发模式

一、JSPJavaBean开发模式 1.1、jspjavabean开发模式架构 jspjavabean开发模式的架构图如下图(图1-1)所示 图1-1 在jspjavabean架构中&#xff0c;JSP负责控制逻辑、表现逻辑、业务对象&#xff08;javabean&#xff09;的调用。 JSPJavaBean模式适合开发业务逻辑不太复杂的web应…

Redis基于客户端分片的集群案例(待实践)

说明&#xff1a; 下面的示例基本都是基于Linux去实现&#xff0c;目的是为了环境的统一&#xff0c;以便于把性能调整到最优。且基于Java。建议生产环境不要使用Windows/Mac OS这些。 在Java领域&#xff0c;基于客户端进行分片最常用的库应该是Jedis&#xff0c;下面基本是基…

mysql select 效能_MYSQL的联合查询最好是少用,效能差异巨大

同样的功能,不同的写法,时间和内存占用差了几千倍,不废话,直接上代码第一种写法:代码如下:$RsDB::get($_ENV[DB],3,"SELECT * FROM _xiazhu WHERE uid IN(SELECT id FROM _user WHERE id<5000)");var_dump($Rs);内存和时间:内存使用:96514.53Kb 运行时间:1272.73m…

高效程序员应该养成的七个习惯

对于软件工程师来说&#xff0c;工作也许意味着许多东西 -- 稳定的收入、做自己感兴趣的项目、找一份更好工作的跳板&#xff0c;或者你只是喜欢与其他程序员共事。但说到“效率”&#xff0c;强调的是在一定时间内按质完成项目的能力。Phil Chu根据自己的经验提出了高效程序员…

概率论与数理统计思维导图知识框架_考研概率论与数理统计 综合题型秘籍思维导图① 随机变量1~3章 [21考研上岸之旅]...

Hello World&#xff0c;我的朋友&#xff0c;这里是一颗小白蛋&#xff0c;大千世界&#xff0c;很高兴以这样的方式与你相遇前言在复习过程中发现概率论知识点很少且集中 所以没有分开章节去整理王安式概率论辅导讲义张宇概率论9讲方浩强化班1800题 综合题型秘籍在学习过程中…

关于软件的架构设计

好的开始相当于成功一半 开始之初的架构设计决定着软件产品的生死存亡。“好的开始相当于成功一半”。 开始的架构设计也是最难的&#xff0c;需要调研同类产品的情况以及技术特征&#xff0c;了解当前世界上对这种产品所能提供的理论支持和技术平台支持。再结合自己项目的特…

[Oracle]快速构造大量数据的方法

[Oracle]快速构造大量数据的方法&#xff1a;create table tab001(id integer primary key, val varchar2(100));insert into tab001 select ij,rpad(to_char(ij),100,A) from ( with DATA2(j) as ( select 0 j from DUAL …

mysql用supervisor管理_Supervisor使用详解

一、supervisor简介Supervisor是用Python开发的一套通用的进程管理程序&#xff0c;能将一个普通的命令行进程变为后台daemon&#xff0c;并监控进程状态&#xff0c;异常退出时能自动重启。它是通过fork/exec的方式把这些被管理的进程当作supervisor的子进程来启动&#xff0c…

Handle/Body pattern(Wrapper pattern)

Handle Body Pattern 一些设计模式&#xff0c;通过一系列非直接的间接的方式&#xff08;这种间接的方式&#xff0c;可称其为 handle&#xff08;把手&#xff09;&#xff09;&#xff0c;完成接口与实现&#xff08;实现可称为 body&#xff08;主体&#xff09;&#xff0…