MySQL中group_concat函数深入理解

 更新时间:2012年11月14日 16:28:43   作者:  
本文通过实例介绍了MySQL中的group_concat函数的使用方法,需要的朋友可以适当参考下
本文通过实例介绍了MySQL中的group_concat函数的使用方法,比如select group_concat(name) 。
MySQL中group_concat函数
完整的语法如下:
group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])
基本查询
mysql> select * from aa;
+------+------+
| id| name |
+------+------+
|1 | 10|
|1 | 20|
|1 | 20|
|2 | 20|
|3 | 200 |
|3 | 500 |
+------+------+
6 rows in set (0.00 sec)
以id分组,把name字段的值打印在一行,逗号分隔(默认)
mysql> select id,group_concat(name) from aa group by id;
+------+--------------------+
| id| group_concat(name) |
+------+--------------------+
|1 | 10,20,20|
|2 | 20 |
|3 | 200,500|
+------+--------------------+
3 rows in set (0.00 sec)
以id分组,把name字段的值打印在一行,分号分隔
mysql> select id,group_concat(name separator ';') from aa group by id;
+------+----------------------------------+
| id| group_concat(name separator ';') |
+------+----------------------------------+
|1 | 10;20;20 |
|2 | 20|
|3 | 200;500 |
+------+----------------------------------+
3 rows in set (0.00 sec)
以id分组,把去冗余的name字段的值打印在一行,
逗号分隔
mysql> select id,group_concat(distinct name) from aa group by id;
+------+-----------------------------+
| id| group_concat(distinct name) |
+------+-----------------------------+
|1 | 10,20|
|2 | 20 |
|3 | 200,500 |
+------+-----------------------------+
3 rows in set (0.00 sec)
以id分组,把name字段的值打印在一行,逗号分隔,以name排倒序
mysql> select id,group_concat(name order by name desc) from aa group by id;
+------+---------------------------------------+
| id| group_concat(name order by name desc) |
+------+---------------------------------------+
|1 | 20,20,10 |
|2 | 20|
|3 | 500,200|
+------+---------------------------------------+
3 rows in set (0.00 sec)
使用group_concat_max_len系统变量,你可以设置允许的最大长度。 程序中进行这项操作的语法如下,其中 val 是一个无符号整数:
SET [SESSION | GLOBAL] group_concat_max_len = val;
若已经设置了最大长度, 则结果被截至这个最大长度。
将环境变量group_concat_max_len 增大。默认是1024.我就设置了session级的环境变量将其变为2048(不够用再加大)。解决该问题

相关文章

  • Mysql数据库的一些命令

    Mysql数据库的一些命令

    如果你习惯用 windows 的数据库,也就是在 图形界面上操作数据库的话,那么当你在命令上 操作 mysql 将会感到陌生,其实只要你掌握了一些基本命令,还有经常使用,熟练起来了, 将会相当方便,而且很快速
    2013-11-11
  • centos6.5中rpm包安装mysql5.7初始化出错的解决方法

    centos6.5中rpm包安装mysql5.7初始化出错的解决方法

    这篇文章主要介绍了centos6.5中rpm包安装mysql5.7初始化出错的解决方法,需要的朋友可以参考下
    2017-09-09
  • 一起来了解mysql数据库

    一起来了解mysql数据库

    大家好,本篇文章主要讲的是一起来了解mysql数据库,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • 简单了解mysql存储字段类型查询效率

    简单了解mysql存储字段类型查询效率

    这篇文章主要介绍了简单了解mysql存储字段类型查询效率,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • 深入解析mysql.sock不见的问题

    深入解析mysql.sock不见的问题

    本篇文章是对mysql.sock不见的问题进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • MySQL之修改数据表存储引擎的三种方式

    MySQL之修改数据表存储引擎的三种方式

    这篇文章主要介绍了MySQL之修改数据表存储引擎的三种方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • CentOS下重启Mysql的各种方法(推荐)

    CentOS下重启Mysql的各种方法(推荐)

    这篇文章主要介绍了CentOS下重启Mysql的各种方法(推荐),非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-01-01
  • MySQL slave_net_timeout参数解决的一个集群问题案例

    MySQL slave_net_timeout参数解决的一个集群问题案例

    这篇文章主要介绍了MySQL slave_net_timeout参数解决的一个集群问题案例,问题日志请见正文,本文使用slave_net_timeout参数解决了这个问题,需要的朋友可以参考下
    2015-05-05
  • Mysql如何在select查询时追加(添加)一个字段并指定值

    Mysql如何在select查询时追加(添加)一个字段并指定值

    这篇文章主要介绍了Mysql如何在select查询时追加(添加)一个字段并指定值,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • mysql如何设置表中字段为当前时间

    mysql如何设置表中字段为当前时间

    这篇文章主要介绍了mysql如何设置表中字段为当前时间问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07

最新评论