跳到主要内容

GROUP_CONCAT

声明

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

说明

返回带有来自一个组的连接的非 NULL 值的字符串结果。

  • ORDER BY 用于指定排序列,ASC 表示升序排列,DESC 表示降序排列,默认为 ASC

  • SEPARATOR 用于指定连接字符串间的分隔符,默认分隔符为 ,

示例

SELECT * FROM book;     //表book(书编号,书名,出版社)
+--------+--------------------------------+-----------------------------+
| bookid | bookname | publishname |
+--------+--------------------------------+-----------------------------+
| 1 | git help | alibaba group publisher |
| 2 | MySQL性能优化 | 浙江大学图文出版社 |
| 3 | JAVA编程指南 | 机械工业出版社 |
| 3 | JAVA编程指南 | 机械工业出版社 |
| 4 | 大规模分布式存储系统 | 机械工业出版社 |
+--------+--------------------------------+-----------------------------+
5 rows in set (0.001 sec) (0.003 sec)

//查找书名信息
SELECT GROUP_CONCAT(bookname) FROM book GROUP BY bookname;
+-----------------------------------+
| GROUP_CONCAT(bookname) |
+-----------------------------------+
| git help |
| JAVA编程指南,JAVA编程指南 |
| MySQL性能优化 |
| 大规模分布式存储系统 |
+-----------------------------------+
4 rows in set (0.001 sec) (0.003 sec)

//查找书名信息,书名唯一
SELECT GROUP_CONCAT(distinct(bookname)) FROM book GROUP BY bookname;
+----------------------------------+
| GROUP_CONCAT(distinct(bookname)) |
+----------------------------------+
| git help |
| JAVA编程指南 |
| MySQL性能优化 |
| 大规模分布式存储系统 |
+----------------------------------+
4 rows in set (0.001 sec) (0.003 sec)

//查找书名和出版社信息,以书名分组,出版社信息降序排序显示
SELECT bookname, GROUP_CONCAT(publishname ORDER BY publishname DESC SEPARATOR ';' ) FROM book GROUP BY bookname;
+--------------------------------+---------------------------------------------------------------------+
| bookname | GROUP_CONCAT(publishname ORDER BY publishname DESC SEPARATOR ';' ) |
+--------------------------------+---------------------------------------------------------------------+
| git help | alibaba group publisher |
| JAVA编程指南 | 机械工业出版社;机械工业出版社 |
| MySQL性能优化 | 浙江大学图文出版社 |
| 大规模分布式存储系统 | 机械工业出版社 |
+--------------------------------+---------------------------------------------------------------------+
4 rows in set (0.003 sec)