MySQL 基础教程

MySQL 高级教程

MySQL SQL 语句

MySQL 笔记

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/mysql-functions-group_concat.html

MySQL GROUP_CONCAT() 聚合内置函数详解

MySQL 内置函数及自定义函数详解 MySQL 内置函数及自定义函数详解


MySQL 的 GROUP_CONCAT() 内置聚合函数,将 GROUP BY 产生的同一个分组中的值连接起来,返回一个字符串结果。

语法

格式

简单的格式如下:

GROUP_CONCAT(expr)

其中 expr 细化后,具体的如下:

GROUP_CONCAT([DISTINCT] expr [,expr ...]
             [ORDER BY {unsigned_integer | col_name | expr}
                 [ASC | DESC] [,col_name ...]]
             [SEPARATOR str_val])

参数

可用的参数具体如下:

  • DISTINCT:用于针对指定列值的去重;
  • ORDER BY:针对分组合并的值,可以先进行排序后再联结;
  • SEPARATOR:可以指定联结的分隔符,默认为英文逗号符。

长度限制

联结的值最大长度受到系统的限制,默认值是 1024,可以通过变量  group_concat_max_len 设置进行调整,具体如下:

SET [GLOBAL | SESSION] group_concat_max_len = val;

如上表达式中,val 是无符号整数。

返回值是非二进制或二进制字符串,具体取决于参数是非二进制还是二进制字符串。结果类型为 TEXT 或 BLOB,除非 group_concat_max_len 小于或等于 512,在这种情况下,结果类型为 VARCHAR 或 VARBINARY。

实例

将每个学生的各科练习分数拼接在一起查询:

mysql> SELECT student_name,
         GROUP_CONCAT(test_score)
       FROM student
       GROUP BY student_name;

如果要去重相同值排序并自定义联结符时,可以如下:

mysql> SELECT student_name,
         GROUP_CONCAT(DISTINCT test_score
                      ORDER BY test_score DESC SEPARATOR ' ')
       FROM student
       GROUP BY student_name;

 

MySQL 的 CONCAT_WS 函数将多个字符串按照指定的分隔符连接在一起,和 CONCAT 函数功能相似,只不过多了一个可以指定的连接 ...
MySQL 自身提供了大量的内置函数(built-in functions),这些函数的存在给日常的开发和数据操作带来了极大的便利。除此之外 ...
python open() 函数打开指定 file 并返回对应的 file object。如果该文件不能打开,则触发 OSError。 ...
Hive SQL 中将字符串拼接的函数是 CONCAT,它返回指定参数的连接字符串,此函数可以接受任意数量的输入字符串。 ...
MySQL 的 LOWER() 函数将字符串中的所有字母字符转换为小写字母字符。与该方法相对应的是 UPPER() 函数,其正好相反,将字符 ...