sql函數 group_concat函數詳解

 

MySQL中group_concat函數sql


完整的語法以下:函數


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

 

基本查詢spa

 

Sql代碼  收藏代碼orm

  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)it

 

以id分組,把name字段的值打印在一行,逗號分隔(默認)select

 

Sql代碼  收藏代碼語法

  1. select id,group_concat(namefrom aa group by id;  im


+------+--------------------+
| id| group_concat(name) |
+------+--------------------+
|1 | 10,20,20|
|2 | 20 |
|3 | 200,500|
+------+--------------------+
3 rows in set (0.00 sec)

 

以id分組,把name字段的值打印在一行,分號分隔

 

Java代碼  收藏代碼

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


逗號分隔

 

Sql代碼  收藏代碼

  1. select id,group_concat(distinct namefrom 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排倒序

 

Sql代碼  收藏代碼

  1. select id,group_concat(name order by name descfrom 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,項目中用到的。

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.   

  43.     HAVING  

  44.         EMPLOYEES.EMPID LIKE '%%'  

  45.         AND EMPLOYEES.EMPNAME LIKE '%%'  

  46.         AND EMPLOYEES.DELEFLAG = 0  

  47.         AND (  

  48.             EMPLOYEES.EMPCLASS = '1'  

  49.             OR EMPLOYEES.EMPCLASS = '2'  

  50.         )  

  51.         AND EMPLOYEES.DEPTID = '001' LIMIT 0  

  52.         ,16   

相關文章
相關標籤/搜索