MySQL统计函数GROUP_CONCAT使用陷阱分析

 更新时间:2016年06月24日 12:24:46   作者:yiluoAK_47  
这篇文章主要介绍了MySQL统计函数GROUP_CONCAT使用中的陷阱,结合实例形式分析了GROUP_CONCAT用于统计时的长度限制问题与相关注意事项,需要的朋友可以参考下

本文实例分析了MySQL统计函数GROUP_CONCAT使用中的陷阱。分享给大家供大家参考,具体如下:

最近在用MySQL做一些数据的预处理,经常会用到group_concat函数,比如类似下面一条语句

复制代码 代码如下:
mysql>select aid,group_concat(bid) from tbl group by aid limit 1;

sql语句比较简单,按照aid分组,并且把相应的bid用逗号串起来。这样的句子大家可能都用过,也可能不会出问题,但是如果bid非常多的话,你就要小心了,比如下面的提示信息:

Query OK, XXX rows affected, 1 warning (3 min 45.12 sec)

怎么会有警告呢,打出来看看:

mysql> show warnings;
+---------+------+-----------------------------------------+
| Level  | Code | Message                 |
+---------+------+-----------------------------------------+
| Warning | 1260 | 1 line(s) were cut by GROUP_CONCAT()  |
+---------+------+-----------------------------------------+

居然被GROUP_CONCAT截断了我的结果,查了一下手册,原来GROUP_CONCAT有个最大长度的限制,超过最大长度就会被截断掉,你可以通过下面的语句获得:

mysql> SELECT @@global.group_concat_max_len;
+-------------------------------+
| @@global.group_concat_max_len |
+-------------------------------+
|           1024   |
+-------------------------------+

1024这就是一般MySQL系统默认的最大长度,如果你的bid串起来大于这个就会出问题,好在有解决的办法:

1.在MySQL配置文件中加上

group_concat_max_len = 102400 #你要的最大长度

2.可以简单一点,执行语句:

mysql> SET GLOBAL group_concat_max_len=102400;
Query OK, 0 rows affected (0.01 sec)

再执行group_concat语句就不会出问题了,另外手册上还给出了group_concat的详细用法,给个示例你就明白了:

复制代码 代码如下:
mysql>select aid,group_concat(bid order by bid separator ',') as bid_str from tbl group by aid;

还可以排序和设置分隔符,功能强大。

更多关于MySQL相关内容感兴趣的读者可查看本站专题:《MySQL日志操作技巧大全》、《MySQL事务操作技巧汇总》、《MySQL存储过程技巧大全》、《MySQL数据库锁相关技巧汇总》及《MySQL常用函数大汇总

希望本文所述对大家MySQL数据库计有所帮助。

相关文章

  • MySql8.0以上版本正确修改ROOT密码的方法

    MySql8.0以上版本正确修改ROOT密码的方法

    这篇文章主要介绍了MySql8.0以上版本正确修改ROOT密码的方法,文中给大家提到了成功部署完毕后出现故障情况,本文分步骤给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-06-06
  • 使用MySQL Slow Log来解决MySQL CPU占用高的问题

    使用MySQL Slow Log来解决MySQL CPU占用高的问题

    在Linux VPS系统上有时候会发现MySQL占用CPU高,导致系统的负载比较高。这种情况很可能是某个SQL语句执行的时间太长导致的。优化一下这个SQL语句或者优化一下这个SQL引用的某个表的索引一般能解决问题
    2013-03-03
  • 快速解决mysql57服务突然不见了的问题

    快速解决mysql57服务突然不见了的问题

    下面小编就为大家带来一篇快速解决mysql57服务突然不见了的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • 解决修改配置文件导致MySQL服务无法启动和停止且MySQL服务操作按钮变为灰色

    解决修改配置文件导致MySQL服务无法启动和停止且MySQL服务操作按钮变为灰色

    这篇文章主要介绍了解决修改配置文件导致MySQL服务无法启动和停止且MySQL服务操作按钮变为灰色问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • MYSQL 运算符总结

    MYSQL 运算符总结

    这篇文章主要介绍了MYSQL 运算符,MySQL支持的算术运算符有加法、减法、乘法、除法返回商、除法返回余数,下面来看看文章的详细介绍,需要的朋友可以参考一下
    2021-11-11
  • MySQL服务无法启动且服务没有报告任何错误解决办法

    MySQL服务无法启动且服务没有报告任何错误解决办法

    这篇文章主要介绍了MySQL服务无法启动且服务没有报告任何错误解决办法,MySQL启动不了可能是由于配置错误、服务未启动、端口被占用等原因造成的,文中介绍的非常详细,需要的朋友可以参考下
    2024-10-10
  • 解析MySQL join查询的原理

    解析MySQL join查询的原理

    这篇文章主要介绍了MySQL join查询的原理,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-01-01
  • mysql 数据库链接状态确认实验(推荐)

    mysql 数据库链接状态确认实验(推荐)

    这篇文章主要介绍了mysql 数据库链接状态确认实验,通过本文我选择 了三种方案给大家详细讲解,结合实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-09-09
  • MySQL高效可靠处理持久化数据的教程指南

    MySQL高效可靠处理持久化数据的教程指南

    这篇文章主要给大家详细介绍了 MySQL 如何高效可靠处理持久化数据,文中有详细的流程步骤和代码示例,对我们的学习有一定的帮助,需要的朋友可以参考下
    2023-07-07
  • 正确使用MySQL update语句

    正确使用MySQL update语句

    今天我们主要向大家讲述的是MySQL update 语句的实际用法,以及在实际操作中哪些相关的操作步骤是值得我们大家注意的。
    2015-08-08

最新评论