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关联查询Join的实现原理和优化建议

    MySQL关联查询Join的实现原理和优化建议

    在平时的开发过程中,大家应该经常会用到join进行多个表的之间的关联查询,但是如果使用不合理的话,会导致查询性能下降,本文就MySQL中的关联查询的实现原理以及一些优化建议等内容做一个讲解,需要的朋友可以参考下
    2023-07-07
  • Mysql忘记root密码怎么办

    Mysql忘记root密码怎么办

    MySQL有时候忘记了root密码是一件伤感的事,下面通过本文给大家介绍Mysql忘记root密码怎么办的相关知识,需要的朋友参考下
    2016-01-01
  • mysql设置默认值无效问题及解决

    mysql设置默认值无效问题及解决

    这篇文章主要介绍了mysql设置默认值无效问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • MySQL实现每天定时12点弹出黑窗口

    MySQL实现每天定时12点弹出黑窗口

    这篇文章主要介绍了MySQL实现每天定时12点弹出黑窗口问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • 一台电脑(windows系统)安装两个版本MYSQL方法步骤

    一台电脑(windows系统)安装两个版本MYSQL方法步骤

    由于新旧项目数据库版本差距太大,编码格式不同,引擎也不同,所以只好装两个数据库,这篇文章主要给大家介绍了关于一台电脑(windows系统)安装两个版本MYSQL的方法步骤,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-03-03
  • MySQL数据库优化技术之配置技巧总结

    MySQL数据库优化技术之配置技巧总结

    这篇文章主要介绍了MySQL数据库优化技术之配置技巧,较为详细的总结分析了MySQL进行硬件级软件优化的相关方法与注意事项,需要的朋友可以参考下
    2016-07-07
  • 自用mysql自带命令实现数据库备份还原的方法

    自用mysql自带命令实现数据库备份还原的方法

    本文章介绍了都是mysql常用的命令一些数据导入导出的命令了,只要我们撑握这些命令就可以方法快速的给我们的数据库进行备份还原了
    2012-04-04
  • MySQL使用触发器实现数据自动更新的应用实例

    MySQL使用触发器实现数据自动更新的应用实例

    触发器是非常常见的自动化数据库操作方式,无论是在数据更新、删除还是需要自动添加一些内容到数据表上,触发器都可以发挥作用,熟悉 SQL 的基本语法和一些常见的用例,可以帮助你合理地设置自己的数据库操作流程,
    2024-01-01
  • MYSQL8如何快速修改root密码

    MYSQL8如何快速修改root密码

    MySQL8的改密码跟MySQL5不同,很多朋友都遇到过这个问题,今天小编给大家讲解下MYSQL8如何快速修改root密码,需要的朋友可以参考下
    2023-05-05
  • 关于mysql数据库误删除后的数据恢复操作说明

    关于mysql数据库误删除后的数据恢复操作说明

    下面小编就为大家带来一篇关于mysql数据库误删除后的数据恢复操作说明。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03

最新评论