MySQL中group_concat函数

完整的语法如下:

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

基本查询

Sql代码  

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

Sql代码  

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

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

Sql代码  

  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,项目中用到的。

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
时间: 2024-08-24 17:25:58

MySQL中group_concat函数的相关文章

MySQL中group_concat函数 --- 很有用的一个用来查询出所有group by 分组后所有 同组内的 内容

本文通过实例介绍了MySQL中的group_concat函数的使用方法,比如select group_concat(name) . MySQL中group_concat函数 完整的语法如下: group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符']) 基本查询 mysql> select * from aa; +------+------+ | id| name | +------+------+ |1 |

MySQL中group_concat函数-和group by配合使用

MySQL中group_concat函数 完整的语法如下: group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符']) 基本查询 Sql代码 收藏代码 select * from aa; +------+------+ | id| name | +------+------+ |1 | 10| |1 | 20| |1 | 20| |2 | 20| |3 | 200 | |3 | 500 | +------+

mysql中group_concat函数用法

该函数返回带有来自一个组的连接的非NULL值的字符串结果.该函数是一个增强的Sybase SQL Anywhere支持的基本LIST()函数. 语法结构: GROUP_CONCAT([DISTINCT] expr [,expr ...] [ORDER BY {unsigned_integer | col_name | expr} [ASC | DESC] [,col_name ...]] [SEPARATOR str_val]) DISTINCT:去除重复值 expr [,expr ...]:一

为什么 MySQL 中 GROUP_CONCAT 函数返回 BLOB 大对象类型?(Why GROUP_CONCAT returns BLOB?)

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 相似的文章列于下方, 我的问题是 CONCAT(字段名, ''),这个用法,就是为了将字段名所代表的数值字段转换成字符串结果. 那么,从以下三楼回

MySQL中concat函数(连接字符串)

MySQL中concat函数使用方法:CONCAT(str1,str2,…) 返回结果为连接参数产生的字符串.如有任何一个参数为NULL ,则返回值为 NULL. 注意:如果所有参数均为非二进制字符串,则结果为非二进制字符串. 如果自变量中含有任一二进制字符串,则结果为一个二进制字符串.一个数字参数被转化为与之相等的二进制字符串格式:若要避免这种情况,可使用显式类型 cast, 例如:SELECT CONCAT(CAST(int_col AS CHAR), char_col) MySQL的con

MySQL中concat函数

使用方法:CONCAT(str1,str2,-) 返回结果为连接参数产生的字符串.如有任何一个参数为NULL ,则返回值为 NULL. 注意:如果所有参数均为非二进制字符串,则结果为非二进制字符串. 如果自变量中含有任一二进制字符串,则结果为一个二进制字符串.一个数字参数被转化为与之相等的二进制字符串格式:若要避免这种情况,可使用显式类型 cast, 例如:SELECT CONCAT(CAST(int_col AS CHAR), char_col) MySQL的concat函数可以连接一个或者多

mysql中concat函数的使用相关总结

concat(str1,str2) 返回结果为连接参数产生的字符串.如有任何一个参数为NULL ,则返回值为 NULL. mysql> select concat('11','22','33'); +------------------------+ | concat('11','22','33') | +------------------------+ | 112233 | +------------------------+ 1 row in set (0.00 sec) MySQL的co

Mysql中的函数

阅读目录 什么是函数 与存储过程的区别 mysql自带函数 自定义函数 什么是函数 mysql中的函数与存储过程类似,都是一组SQL集: 与存储过程的区别 函数可以return值,存储过程不能直接return,但是有输出参数可以输出多个返回值: 函数可以嵌入到sql语句中使用,而存储过程不能: 函数一般用于实现较简单的有针对性的功能(如求绝对值.返回当前时间等),存储过程用于实现复杂的功能(如复杂的业务逻辑功能): mysql自带函数 mysql本身已经实现了一些常见的函数,如数学函数.字符串函

MySQL中ROW_NUMBER()函数的替换实现

SELECT t.*, @RowNum := @RowNum + 1 AS RowNum FROM t, (SELECT @RowNum := 0) AS myRows MySQL中没有ROW_NUMBER()函数,可以用以上代码替换. MySQL中ROW_NUMBER()函数的替换实现