该函数返回带有来自一个组的连接的非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. oracle 函数 WMSYS.WM_CONCAT 与对应 mysql 函数GROUP_CONCAT的用法

    1.oracle函数 WMSYS.WM_CONCAT的使用 如图,将图1的结果变成图2的结果,使用函数 WMSYS.WM_CONCAT 即可. 查询语句需要配合使用group by select aa ...

  2. mysql 函数GROUP_CONCAT(temp.amount SEPARATOR ',')的用法

    mysql 函数GROUP_CONCAT(temp.amount SEPARATOR ',')的用法 使用场景:例如:想要查询用户的最喜欢购买的几种商品,这个时候就需要使用group_concat(字 ...

  3. mysql 函数group_concat()

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

  4. 关于mysql函数GROUP_CONCAT

    GROUP_CONCAT()是MySQL数据库提供的一个函数,通常跟GROUP BY一起用,具体可参考MySQL官方文挡:http://dev.mysql.com/doc/refman/5.0/en/ ...

  5. 【转】关于MySQL函数GROUP_CONCAT的使用

    GROUP_CONCAT()是MySQL数据库提供的一个函数,通常跟GROUP BY一起用,具体可参考MySQL官方文挡:http://dev.mysql.com/doc/refman/5.0/en/ ...

  6. 使用mysql函数 group_concat 一点需要注意的

    这个函数是一个非常好用的函数,比如我们可以在 进行多对多关联表,进行批量查询的时候可以用到, 比如学生和老师是多对多的关系,如果我们希望查询 指定的一些老师对应的学生有哪些 的时候,一般的情况,我们可 ...

  7. mysql 函数 GROUP_CONCAT 单元格中最长字符串和excel导出问题

    GROUP_CONCAT 使用方式GROUP_CONCAT ([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符']) SELECT ...

  8. MySQL函数GROUP_CONCAT() 实现多条数据合并

    group_concat()会计算哪些行属于同一组,将属于同一组的列显示出来,group by指定的列进行分组. 例如: -- 根据物流订单id查询所有物流订单,车源订单,车辆信息(多条数据合并为一条 ...

  9. mysql中group_concat函数用法

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

随机推荐

  1. ldconfig 的简单用法

    ldconfig: configure dynamic linker run-time binds. 比如,我编译完 boost 后(boost 的有些库需要编译后生成动态或静态库使用,例如 Pyth ...

  2. robotframework的字符类型转换,用Evaluate来转换

    ${b} BuiltIn.Set Variable 1.1 ${c}= BuiltIn.Evaluate float(${b}) ${d}= BuiltIn.Evaluate ${c}+2.2 1.有 ...

  3. Linux 通过rinetd端口转发来访问内网服务

    可以通过端口映射的方式,来通过具有公网的云服务器 ECS 访问用户名下其它未购买公网带宽的内网 ECS 上的服务.端口映射的方案有很多,比如 Linux 下的 SSH Tunnel.rinetd,Wi ...

  4. Caused by: java.sql.SQLException: Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp

    错误信息如下: Caused by: java.sql.SQLException: Value '0000-00-00 00:00:00' can not be represented as java ...

  5. js获取访问IP、地区、、当前操作浏览器

    js获取IP.地区.当前操作浏览器有什么用呢? 我的回答是用处很多,比如现在的异地登录和对用户常用浏览器做数据分析等. 源代码如下:index.html <!DOCTYPE html> & ...

  6. 从零开始搭建django前后端分离项目 系列六(实战之聚类分析)

    项目需求 本项目从impala获取到的数据为用户地理位置数据,每小时的数据量大概在8000万条,数据格式如下: 公司要求对这些用户按照聚集程度进行划分,将300米范围内用户数大于200的用户划分为一个 ...

  7. TMS-规划图

    规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 ...

  8. Python股票分析系列——数据整合.p7

    欢迎来到Python for Finance教程系列的第7部分. 在之前的教程中,我们为整个标准普尔500强公司抓取了雅虎财经数据. 在本教程中,我们将把这些数据组合到一个DataFrame中. 到此 ...

  9. .Net Core 在 Linux-Centos上的部署实战教程(一)

    pa我是在VS2017上写好项目然后来部署的,我的宗旨能截图就少BB 服务器系统: Asp.Net Core版本: 1.往服务器安装.net core 2.1 https://www.microsof ...

  10. ASP.NET Core 企业开发架构概述

    企业开发框架包括垂直方向架构和水平方向架构.垂直方向架构是指一个应用程序的由下到上叠加多层的架构,同时这样的程序又叫整体式程序.水平方向架构是指将大应用分成若干小的应用实现系统功能的架构,同时这样的系 ...