【转】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( ...
随机推荐
- linux {..}用法
一.2018-{01..07}* 这个意思是 2018-01* 到2018-07*全部输出出来. 二.echo {a..c} a b c
- Gitlab-使用其它API资源
1. Users: 执行下面的任务去管理用户 List users Get, Create , edit, and delete a user List SSH keys for a given us ...
- ubuntu ifconfig只有lo没有ens33的问题
如果ifconfig只显示了lo, ifconfig -a 却正常显示ens33.那么可以按照如下的操作: service network-manager stop rm /var/lib/Netwo ...
- C#开发Unity游戏教程循环遍历做出判断及Unity游戏示例
C#开发Unity游戏教程循环遍历做出判断及Unity游戏示例 Unity中循环遍历每个数据,并做出判断 很多时候,游戏在玩家做出判断以后,游戏程序会遍历玩家身上大量的所需数据,然后做出判断,即首先判 ...
- android touch事件分发流程
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha 三个方法:分发触摸事件dispatchTouchEvent.在触摸事件的时候onTouc ...
- C语言一些基础知识
#include<bits/stdc++.h> #include<bits/stdc++.h>包含C++的所有头文件,看见别人用这个函数,然后就能直接用vector,set,s ...
- QThreadPool线程池的使用,线程与Widget通过信号与槽的方式通信。
因为QRunnable类并非继承自QObject,不能使用信号和槽,为了能够使用信号与槽和Widget通信,需要对QRunnable进行封装. 定义一个类QMyRunnable,该类首先继承自QObj ...
- mysql|表row_format的静态与动态,Compact
innodb 一般对应 Compact ,MyISAM 一般对应静态与动态 mysql中若一张表里面存在varchar.text以及其变形.blob以及其变形的字段的话,那么这个表其实也叫动态表,即 ...
- HDU 4790 Just Random (2013成都J题)
Just Random Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- IAR EWARM __iar_program_start, __iar_data_init3, __iar_copy_init3, __iar_zero_init3
#include <stdint.h> // The type of a pointer into the init table. typedef void const * table_p ...