【转】group_concat函数详解
转自: http://hchmsguo.iteye.com/blog/555543
问了好多人,都不知道group_concat这个函数。
这个函数好啊,能将相同的行组合起来,省老事了。
MySQL中group_concat函数
完整的语法如下:
group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])
基本查询
- 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字段的值打印在一行,逗号分隔(默认)
- 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字段的值打印在一行,分号分隔
- 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字段的值打印在一行,
逗号分隔
- 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排倒序
- 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,项目中用到的。
- SELECT
- EMPLOYEES.EMPID
- ,EMPLOYEES.EMPNAME
- ,DEPARTMENTS.DEPARTMENTNAME
- ,EMPLOYEES.DEPTID
- ,EMPLOYEES.EMPPWD
- ,EMPLOYEES.INSIDEEMAIL
- ,EMPLOYEES.OUTSIDEEMAIL
- ,EMPLOYEES.DELEFLAG
- ,EMPLOYEES.EMPCLASS
- ,(CONCAT('[', <span style="color: #ff0000;">GROUP_CONCAT</span>
- (ROLE.Role_Name SEPARATOR '],['), ']')) AS ROLENAME
- ,(concat( '[', (
- SELECT
- <span style="color: #ff0000;">GROUP_CONCAT</span>
- (DEPARTMENTS.DEPARTMENTNAME separator '],[')
- FROM
- EMP_ROLE_DEPT
- LEFT JOIN DEPARTMENTS
- ON (
- DEPARTMENTS.DEPARTMENTID = EMP_ROLE_DEPT.DEPTID
- AND DEPARTMENTS.DELEFLAG = 0
- )
- GROUP BY
- EMP_ROLE_DEPT.EMPID
- HAVING
- EMP_ROLE_DEPT.EMPID = EMPLOYEES.EMPID
- ),']')) AS DEPARTMENTRIGHT
- FROM
- EMPLOYEES
- LEFT JOIN DEPARTMENTS
- ON (
- DEPARTMENTS.DEPARTMENTID = EMPLOYEES.DEPTID
- AND DEPARTMENTS.DELEFLAG = 0
- )
- LEFT JOIN ROLE_EMP
- ON (ROLE_EMP.EMP_ID = EMPLOYEES.EMPID)
- LEFT JOIN ROLE
- ON (ROLE_EMP.ROLE_ID = ROLE.ROLE_ID)
- <span style="color: #ff0000;"> GROUP BY
- EMPLOYEES.EMPID</span>
- HAVING
- EMPLOYEES.EMPID LIKE '%%'
- AND EMPLOYEES.EMPNAME LIKE '%%'
- AND EMPLOYEES.DELEFLAG = 0
- AND (
- EMPLOYEES.EMPCLASS = '1'
- OR EMPLOYEES.EMPCLASS = '2'
- )
- AND EMPLOYEES.DEPTID = '001' LIMIT 0
- ,16
【转】group_concat函数详解的更多相关文章
- group_concat函数详解
来自: http://hchmsguo.iteye.com/blog/555543 MySQL中group_concat函数 完整的语法如下: group_concat([DISTINCT] 要连接的 ...
- 转 group_concat函数详解
MySQL中group_concat函数 完整的语法如下: group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔 ...
- mysql之group_concat函数详解
函数语法: group_concat( [DISTINCT] 要连接的字段 [Order BY 排序字段 ASC/DESC] [Separator '分隔符'] ) 下面举例说明: sele ...
- Mysql中关于 group_concat函数详解
group_concat()主要功能:能将相同的行组合起来 完整的语法如下: group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Sepa ...
- mysql group_concat函数详解
group_concat( [DISTINCT] 要连接的字段 [Order BY 排序字段 ASC/DESC] [Separator '分隔符'] ) 1. --以id分组,把price字 ...
- malloc 与 free函数详解<转载>
malloc和free函数详解 本文介绍malloc和free函数的内容. 在C中,对内存的管理是相当重要.下面开始介绍这两个函数: 一.malloc()和free()的基本概念以及基本用法: 1 ...
- NSSearchPathForDirectoriesInDomains函数详解
NSSearchPathForDirectoriesInDomains函数详解 #import "NSString+FilePath.h" @implementation ...
- JavaScript正则表达式详解(二)JavaScript中正则表达式函数详解
二.JavaScript中正则表达式函数详解(exec, test, match, replace, search, split) 1.使用正则表达式的方法去匹配查找字符串 1.1. exec方法详解 ...
- Linux C popen()函数详解
表头文件 #include<stdio.h> 定义函数 FILE * popen( const char * command,const char * type); 函数说明 popen( ...
随机推荐
- ResourceBundle.getBundle方法demo
这个参考链接 http://blog.csdn.net/tgyman/article/details/56012706
- js原型鏈與js繼承解析
最近在網上看了諸多js原型鏈的解析,說得雲裡霧裡,不明所以.徹底了解後,決定出個博客記錄一下,一是方便後來人學習,二是方便日後複習. 首先,我們來看一下構造函數.原型.實例之間的關係圖: 所以,我們通 ...
- BZOJ4277 : [ONTAK2015]Cięcie
假设分成如下三段: [1..i][i+1..j][j+1..n] 考虑中间那一段,设f[i]为前i位组成的数模q的值,pow[i]为$10^i$模q的值,那么有: f[j]-f[i]*pow[j-i] ...
- BZOJ3459 : Bomb
二分答案,转化成判定所有科学家能否在lim时间内走到安全的地方 考虑网络流,对于每个非叶子节点,S向它连边,容量为该点科学家的人数 对于每个叶子节点,向T连边,容量为该点的容量 对于每个非叶子节点x, ...
- 吴恩达-coursera-机器学习-week7
十二.支持向量机(Support Vector Machines) 12.1 优化目标 12.2 大边界的直观理解 12.3 数学背后的大边界分类(选修) 12.4 核函数1 12.5 核函数2 12 ...
- hdu 5781 ATM Mechine dp
ATM Mechine 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5781 Description Alice is going to take ...
- phpexcel一个bug
大家好! 我想我发现了这个bug. 如果我从文件中图像删除,它加载正常. 如果有图像时候,何时$ objPHPExcel = PHPExcel_IOFactory :: load($ file);我得 ...
- 再谈JavaScript中的闭包
一.什么是闭包 闭包就是有权访问另一个函数作用域中变量的函数,因此,闭包的本质是一个函数.当一个内部函数被保存到外部时,就会生成闭包. 二.闭包的作用 1.实现公有变量,即通过局部变量实现全局变量的效 ...
- 硬盘img镜像备份工具
linux下使用dd,Windows下使用WinImage,不过dd使用的比较多.
- HDU 4768 Flyer (2013长春网络赛1010题,二分)
Flyer Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...