group_concat()主要功能:能将相同的行组合起来

完整的语法如下:

group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])

基本查询

  1. 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字段的值打印在一行,逗号分隔(默认)

  1. 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字段的值打印在一行,分号分隔

  1. 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字段的值打印在一行,

逗号分隔

  1. 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排倒序

  1. 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)

测试sql,项目中用到的。

    1. SELECT
    2. EMPLOYEES.EMPID
    3. ,EMPLOYEES.EMPNAME
    4. ,DEPARTMENTS.DEPARTMENTNAME
    5. ,EMPLOYEES.DEPTID
    6. ,EMPLOYEES.EMPPWD
    7. ,EMPLOYEES.INSIDEEMAIL
    8. ,EMPLOYEES.OUTSIDEEMAIL
    9. ,EMPLOYEES.DELEFLAG
    10. ,EMPLOYEES.EMPCLASS
    11. ,(CONCAT('[', <span style="color: #ff0000;">GROUP_CONCAT</span>
    12. (ROLE.Role_Name SEPARATOR '],['), ']')) AS ROLENAME
    13. ,(concat( '[', (
    14. SELECT
    15. <span style="color: #ff0000;">GROUP_CONCAT</span>
    16. (DEPARTMENTS.DEPARTMENTNAME separator '],[')
    17. FROM
    18. EMP_ROLE_DEPT
    19. LEFT JOIN DEPARTMENTS
    20. ON (
    21. DEPARTMENTS.DEPARTMENTID = EMP_ROLE_DEPT.DEPTID
    22. AND DEPARTMENTS.DELEFLAG = 0
    23. )
    24. GROUP BY
    25. EMP_ROLE_DEPT.EMPID
    26. HAVING
    27. EMP_ROLE_DEPT.EMPID = EMPLOYEES.EMPID
    28. ),']')) AS DEPARTMENTRIGHT
    29. FROM
    30. EMPLOYEES
    31. LEFT JOIN DEPARTMENTS
    32. ON (
    33. DEPARTMENTS.DEPARTMENTID = EMPLOYEES.DEPTID
    34. AND DEPARTMENTS.DELEFLAG = 0
    35. )
    36. LEFT JOIN ROLE_EMP
    37. ON (ROLE_EMP.EMP_ID = EMPLOYEES.EMPID)
    38. LEFT JOIN ROLE
    39. ON (ROLE_EMP.ROLE_ID = ROLE.ROLE_ID)
    40. <span style="color: #ff0000;">    GROUP BY
    41. EMPLOYEES.EMPID</span>
    42. HAVING
    43. EMPLOYEES.EMPID LIKE '%%'
    44. AND EMPLOYEES.EMPNAME LIKE '%%'
    45. AND EMPLOYEES.DELEFLAG = 0
    46. AND (
    47. EMPLOYEES.EMPCLASS = '1'
    48. OR EMPLOYEES.EMPCLASS = '2'
    49. )
    50. AND EMPLOYEES.DEPTID = '001' LIMIT 0
    51. ,16

Mysql中关于 group_concat函数详解的更多相关文章

  1. MYSQL常用内置函数详解说明

    函数中可以将字段名当作变量来用,变量的值就是该列对应的所有值:在整理98在线字典数据时(http://zidian.98zw.com/),有这要一个需求,想从多音字duoyinzi字段值提取第一个拼音 ...

  2. mysql中SQL执行过程详解与用于预处理语句的SQL语法

    mysql中SQL执行过程详解 客户端发送一条查询给服务器: 服务器先检查查询缓存,如果命中了缓存,则立刻返回存储在缓存中的结果.否则进入下一阶段. 服务器段进行SQL解析.预处理,在优化器生成对应的 ...

  3. mysql中的group_concat函数的用法

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

  4. SQLServer 中实现类似MySQL中的group_concat函数的功能

    SQLServer中没有MySQL中的group_concat函数,可以把分组的数据连接在一起. 后在网上查找,找到了可以实现此功能的方法,特此记录下. SELECT a, stuff((SELECT ...

  5. Mysql中limit的用法详解

    Mysql中limit的用法详解 在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,为我们提供了limit这样一个功能. SELECT * FROM table LIMIT [offset ...

  6. Oracle中的substr()函数 详解及应用

    注:本文来源于<Oracle中的substr()函数 详解及应用> 1)substr函数格式   (俗称:字符截取函数) 格式1: substr(string string, int a, ...

  7. MySQL中的group_concat函数的使用

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

  8. mysql中event的用法详解

    一.基本概念mysql5.1版本开始引进event概念.event既“时间触发器”,与triggers的事件触发不同,event类似与linux crontab计划任务,用于时间触发.通过单独或调用存 ...

  9. group_concat函数详解

    来自: http://hchmsguo.iteye.com/blog/555543 MySQL中group_concat函数 完整的语法如下: group_concat([DISTINCT] 要连接的 ...

随机推荐

  1. 自学了三天的SeaJs学习,解决了前端的一些问题,与小伙伴们一起分享一下!

    我为什么学习SeaJs? [第一]:为了解决项目中资源文件版本号的问题,以及打包压缩合并等问题. [第二]:好奇心和求知欲.[我发现很多知名网站也都在使用(qq空间, msn, 淘宝等等),而且 Se ...

  2. apache多站点配置+多端口配置

    Apache多站点配置 这种方法是配置不同的地址访问不同的文件夹的配置 1:修改本机的hosts文件,如下: 示例: 127.0.0.1 localhost 127.0.0.1 www.dede.co ...

  3. LeetCode: pow

    Title: https://leetcode.com/problems/powx-n/ 思路:二分.使用递归或者非递归.非递归有点难理解.pow(0,0)=1 递归的方法是将n为负数的用除法解决.有 ...

  4. Ruby窗口程序

    require 'tk' tkroot=TkRoot.new { title 'hellw word' geometry '300x200' } lb = TkLabel.new(tkroot) do ...

  5. Jquery获取第一个子元素

    如获取id为divId的div下的第一个子div $("#divId").children("div").get(0) 但得到的是一个dom对象,如果要得到Jq ...

  6. 在英文 sql2005中 比较nvarchar 与 varchar的速度

    declare @str1 varchar(max); declare @count int; ; print 'begin' begin set @str1 = @str1 + '*'; ; end ...

  7. mysql SQL_MODE设置

    1.1.   SQL_MODE设置 在生产环境中强烈建议将这个值设置为严格模式,这样有些问题可以在数据库的设计和开发阶段就能实现,而如果在生产环境下运行数据库后发现这类问题,那么修改的代价将变得十分巨 ...

  8. mac下SSH很快被断开

    解决方法: 1. 切换到root账号:sudo bash -c 'su - root' 2. 修改/etc/ssh_config文件 ServerAliveCountMax 5 ServerAlive ...

  9. hdu 1506(dp求最大子矩阵)

    题意:容易理解... 分析:对于每个单位矩阵,我们先求出连续比它高的最左边的下标假设为l,然后求出比它高的最右边的下标假设为r,然后矩阵的面积就是(r-l+1)*1:我们从左到 右扫一遍,求出每个点的 ...

  10. STM32 TIM重映射

    复用功能 没有重映射 部分重映射 完全重映射 TIM3_CH1 PA6 PB4 PC6 CH2 PA7 PB5 PC7 CH3 PB0 PB0 PC8 CH4 PB1 PB1 PC9 /**重映射 t ...