该函数返回带有来自一个组的连接的非NULL值的字符串结果。该函数是一个增强的Sybase SQL Anywhere支持的基本LIST()函数。

语法结构:

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

DISTINCT:去除重复值

expr [,expr ...]:一个或多个字段(或表达式)

ORDER BY {unsigned_integer | col_name | expr} [ASC | DESC] [,col_name ...]:根据字段或表达式进行排序,可多个

SEPARATOR str_val:分隔符(默认为英文逗号)

示例1:查询某分类的所有子分类并用逗号连接子分类ID

mysql>SELECT GROUP_CONCAT(cat_id) FROM goods_cat WHERE pid = 25
+-----------------------------+
| GROUP_CONCAT(cat_id) |
+-----------------------------+
| 26,111,130,206,239,322,323 |
+-----------------------------+

  

示例2:查询某分类的所有子分类并用分号连接子分类ID

mysql>SELECT GROUP_CONCAT(cat_id SEPARATOR ';') FROM goods_cat WHERE pid = 25
+-------------------------------------+
| GROUP_CONCAT(cat_id SEPARATOR ';') |
+-------------------------------------+
| 26;111;130;206;239;322;323 |
+-------------------------------------+

  

示例3:查询某分类的所有子分类,根据p_order ASC, cat_id DESC排序后再连接

mysql>SELECT GROUP_CONCAT(cat_id ORDER BY p_order ASC, cat_id DESC) FROM goods_cat WHERE pid = 25
+----------------------------------------------------------+
| GROUP_CONCAT(cat_id ORDER BY p_order ASC, cat_id DESC) |
+----------------------------------------------------------+
| 332,331,242,212,133,112,29,26,333,330,327,244,138,116 |
+----------------------------------------------------------+

示例4:结合GROUP BY查询

mysql>SELECT pid, GROUP_CONCAT(cat_id) FROM goods_cat GROUP BY pid
+-----------+-------------------------------------+
| parent_id | GROUP_CONCAT(cat_id) |
+-----------+-------------------------------------+
| 22 | 35,166,191,209,233,252,256,257,258 |
| 25 | 26,111,130,206,239,322,323 |
| 26 | 29,51,65,66,70,75,238 |
| 323 | 332,333,334,335,336,337,338,339 |
+-----------+-------------------------------------+

  

注意:

1. 最大长度(字符)限制

系统变量:group_concat_max_len

SET [SESSION | GLOBAL] group_concat_max_len = val;

  

val必须是无符号整数

用了GROUP_CONCAT函数,SELECT语句中的LIMIT语句起不了任何作用。

2. INT类型陷阱

连接的字段为INT类型时,低版本或出现返回的结果不是逗号分隔的字符串,而是byte[]。

此时,需要用CAST或CONVERT函数进行转换。

mysql中group_concat函数用法的更多相关文章

  1. MySQL中group_concat函数 --- 很有用的一个用来查询出所有group by 分组后所有 同组内的 内容

    本文通过实例介绍了MySQL中的group_concat函数的使用方法,比如select group_concat(name) . MySQL中group_concat函数 完整的语法如下: grou ...

  2. MySQL中group_concat函数-和group by配合使用

    MySQL中group_concat函数 完整的语法如下: group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔 ...

  3. MySQL中group_concat函数深入理解

    本文通过实例介绍了MySQL中的group_concat函数的使用方法,比如select group_concat(name) . 一.MySQL中group_concat函数 完整的语法如下: gr ...

  4. MySQL中group_concat函数

    本文通过实例介绍了MySQL中的group_concat函数的使用方法,比如select group_concat(name) .MySQL中group_concat函数完整的语法如下:group_c ...

  5. mysql中FIND_IN_SET函数用法

    本篇文章主要介绍mysql中FIND_IN_SET函数用法,用来精确查询字段中以逗号分隔的数据 以及其与 like 和 in 的区别 1.问题发现 之前在做工作任务时有这么一个需求:需要用接口所传的服 ...

  6. MYSQL中group_concat( )函数中参数的排序方法

    使用mysql中的group_concat( )函数连接指定字段时,可以先对该字段进行排序. PS:是因为二刷mysql的51道题的第12题遇到的:查询和" 01 "号同学学习的课 ...

  7. 关于Mysql中GROUP_CONCAT函数返回值长度的坑

    1.GROUP_CONCAT函数: 功能:将group by产生的同一个分组中的值连接起来,返回一个字符串结果. 语法:group_concat( [distinct] 要连接的字段 [order b ...

  8. 关于mysql中GROUP_CONCAT函数的使用

    偶然看到公司存储过程中有个字符串拼接的函数,改bug过程中使用到了,还挺有用的,于是记录下来方便记忆,帮助有需要的人. 这是我需要整理的串,他是调用了一个存储过程,传入组织机构的id和迭代层数,返回来 ...

  9. MySQL中group_concat()函数的排序方法

    group_concat()函数的参数是可以直接使用order by排序的.666..下面通过例子来说明,首先看下面的t1表. 比如,我们要查看每个人的多个分数,将该人对应的多个分数显示在一起,分数要 ...

随机推荐

  1. PHP程序开发人员要掌握的知识

    文件目录处理函数包80%以上的函数的功能的灵活运用. 日期时间函数中的80%以上的函数的功能的灵活运用 数学函数库中的100%的内容. 网络库中的60%以上的内容,对各个函数的功能比较熟悉. 字符串处 ...

  2. 《深入.NET平台和C#编程》内部测试题-笔试试卷

    1.以下关于序列化和反序列化的描述错误的是( C). a.序列化是将对象的状态存储到特定存储介质中的过程 b.二进制格式化器的Serialize()和Deserialize()方法可以用来实现序列化和 ...

  3. ES5中数组新增的方法说明

    一.前言-索引 ES5中新增的不少东西,了解之对我们写JavaScript会有不少帮助,比如数组这块,我们可能就不需要去有板有眼地for循环了. ES5中新增了写数组方法,如forEach (js v ...

  4. adodb配置与使用

    =========================================php100:80:ADODB PHP数据库万能引擎类 ADODB PHP数据库介绍与特点 ADODB 是一种兼容的各 ...

  5. python路径函操作

    #判断是否为文件 os.path.isfile   #判断是否为目录 os.path.isdir   #返回文件名 os.path.basename(path)   #返回文件目录 os.path.d ...

  6. struts2中的标签“# ”,“%{ }”,“%{# }”

    理解值栈(ValueStack)与上下文(StackContext):            Struts2中有值堆栈和堆栈上下文的概念,你用 <s:debug />可以看出. 值栈中的对 ...

  7. 转:使用Tengine替代Nginx作为负载均衡服务器

    原文来自于:http://heylinux.com/archives/2938.html Tengine是由淘宝网发起的Web服务器项目.它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级 ...

  8. MySQL创建用户、授权等

    用于MySQL5.6命令行执行成功: create database wp_people; create user wp_people@'localhost' identified by 'yrwb' ...

  9. 消息队列msmq

    http://q.cnblogs.com/q/26895/ 远程队列必须现在运程服务器上创建. 在 Windows Server 2008 上安装 IIS 服务和 MSMQ 功能后,系统会在 IIS  ...

  10. Life Forms

    poj3294:http://poj.org/problem?id=3294 题意:就是求n个串的中一个最大的子串,这个子串在超过n/2的串中出现. 题解:这是一道好题.首先一种解法就是用后缀数组来搞 ...