转自: http://hchmsguo.iteye.com/blog/555543

问了好多人,都不知道group_concat这个函数。

这个函数好啊,能将相同的行组合起来,省老事了。

MySQL中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

【转】group_concat函数详解的更多相关文章

  1. group_concat函数详解

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

  2. 转 group_concat函数详解

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

  3. mysql之group_concat函数详解

    函数语法: group_concat( [DISTINCT]  要连接的字段   [Order BY 排序字段 ASC/DESC]   [Separator '分隔符'] ) 下面举例说明: sele ...

  4. Mysql中关于 group_concat函数详解

    group_concat()主要功能:能将相同的行组合起来 完整的语法如下: group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Sepa ...

  5. mysql group_concat函数详解

    group_concat( [DISTINCT]  要连接的字段   [Order BY 排序字段 ASC/DESC]   [Separator '分隔符'] ) 1. --以id分组,把price字 ...

  6. malloc 与 free函数详解<转载>

    malloc和free函数详解   本文介绍malloc和free函数的内容. 在C中,对内存的管理是相当重要.下面开始介绍这两个函数: 一.malloc()和free()的基本概念以及基本用法: 1 ...

  7. NSSearchPathForDirectoriesInDomains函数详解

    NSSearchPathForDirectoriesInDomains函数详解     #import "NSString+FilePath.h" @implementation ...

  8. JavaScript正则表达式详解(二)JavaScript中正则表达式函数详解

    二.JavaScript中正则表达式函数详解(exec, test, match, replace, search, split) 1.使用正则表达式的方法去匹配查找字符串 1.1. exec方法详解 ...

  9. Linux C popen()函数详解

    表头文件 #include<stdio.h> 定义函数 FILE * popen( const char * command,const char * type); 函数说明 popen( ...

随机推荐

  1. Java总结——常见Java集合实现细节(1)

    Java提高——常见Java集合实现细节(1) 2018年04月18日 15:07:35 阅读数:25 集合关系图 Set和Map set代表一种集合元素无序.集合元素不可重复的集合 map代表一种由 ...

  2. Android中加载事件的方式

    Android中加载事件的方式 通过内部类的方式实现 通过外部类的方式实现 通过属性的方式实现 通过自身实现接口的方式实现 通过内部类的方式实现 Demo btn_Login.setOnClickLi ...

  3. Nutch源码阅读进程5

    看nutch的源码仿佛就是一场谍战片,而构成这精彩绝伦的谍战剧情的就是nutch的每一个从inject->generate->fetch->parse->update的环节,首 ...

  4. [ 转载 ] Http详解2

    HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统 | |目录 1引言 2一.HTTP协议详解之URL篇 3二.HTTP协议详解之请求篇 4三.HTTP协议详 ...

  5. POJ3070 Fibonacci[矩阵乘法]【学习笔记】

    Fibonacci Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 13677   Accepted: 9697 Descri ...

  6. code vs 2602 最短路径问题

    题目描述 Description 平面上有n个点(n<=100),每个点的坐标均在-10000~10000之间.其中的一些点之间有连线.若有连线,则表示可从一个点到达另一个点,即两点间有通路,通 ...

  7. hashMap归纳

    Hashmap的与hashtable的区别: Hashmap:允许key为空:查询速度快(他是非同步的:避免了同步中不必要的判断):不安全的(容易引  发多线程安全问题) Hashtable:不允许k ...

  8. java读取记事本文件第一个字符遇到的一个坑

    记事本数据是这样的: Faq_faqTitle=常见问题_标题Faq_faqKeyword=关键字Faq_faqDescription=FAQ描述...... 文件编码:utf-8有签名 然后用jav ...

  9. 【原】Spring整合Redis(第三篇)—盘点SDR搭建中易出现的错误

    易错点01:Spring版本过低导致的错误[环境参数]Redis版本:redis-2.4.5-win32-win64Spring原来的版本:4.1.7.RELEASESpring修改后的版本:4.2. ...

  10. spring-boot parent变更为依赖方式

    原parent继承方式 <parent> <groupId>org.springframework.boot</groupId> <artifactId> ...