`

group_concat函数详解

 
阅读更多
来自:http://hchmsguo.iteye.com/blog/555543
MySQL中group_concat函数

完整的语法如下:

GROUP_CONCAT([DISTINCT] expr [,expr ...] [ORDER BY {unsigned_integer | col_name | expr} [ASC | DESC] [,col_name ...]] [SEPARATOR str_val])

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 |
+------+------+
6 rows in set (0.00 sec)

以id分组,把name字段的值打印在一行,逗号分隔(默认)

Sql代码  收藏代码
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代码  收藏代码
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代码  收藏代码
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代码  收藏代码
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代码  收藏代码
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】使用之MySQL官方文档翻译

    ### GROUP_CONCAT 函数详解 #### 一、概述 `GROUP_CONCAT` 是 MySQL 中一个非常实用的聚合函数,主要用于将来自同一分组的多个值连接成一个字符串。这一功能在许多场景下都非常有用,例如汇总数据、创建列表等。 ...

    MySQL拼接字符串函数GROUP_CONCAT详解

    MySQL中的GROUP_CONCAT函数是一个非常实用的聚合函数,主要用于在分组查询中将同一组内的多个值合并为一个字符串,通常用于数据汇总和报告。它能够处理非NULL值,并且可以进行排序、去重和自定义分隔符,极大地提高...

    DB2函数名称及举例

    ### DB2函数名称及举例详解 #### 一、概述 在数据库管理与查询过程中,DB2作为一款功能强大的关系型数据库管理系统,提供了丰富的内置函数来帮助用户高效地处理数据。这些函数涵盖了数学运算、字符串操作、日期...

    Mysql的GROUP_CONCAT()函数使用方法

    ### MySQL的GROUP_CONCAT()函数使用详解 在MySQL中,`GROUP_CONCAT()`是一个非常实用且强大的聚合函数,主要用于将一组值连接成一个字符串。它常用于查询中,特别是需要将多个行的数据合并到一行时。本文将详细介绍...

    oracle合并列的函数wm_concat的使用详解

    最后,关于可能感兴趣的相关文章,包括Oracle中多行记录合并、连接、聚合字符串的不同方法,以及如何在Oracle中实现类似功能的其他技术,如使用`GROUP_CONCAT`(这是MySQL中的一个函数,Oracle没有直接对应的内置...

    详解MySQL中concat函数的用法(连接字符串)

    总结来说,MySQL中的`CONCAT`、`CONCAT_WS`和`GROUP_CONCAT`函数提供了强大的字符串处理能力,允许你灵活地连接和组合字符串,以满足不同的查询需求。在处理大量文本数据时,这些函数是数据库查询中不可或缺的一部分...

    mysql实现查询数据并根据条件更新到另一张表的方法示例

    4. **GROUP_CONCAT函数详解**: `GROUP_CONCAT`函数在MySQL中用于将同一组的某个列的值合并为一个字符串,用指定的分隔符(默认为逗号)分隔。它接受几个可选参数: - `DISTINCT`:去除重复的值。 - `ORDER BY`:...

    详解mysql中的concat相关函数

    总结,`CONCAT`、`CONCAT_WS`和`GROUP_CONCAT`都是MySQL中处理字符串连接的重要函数,它们在不同的场景下提供了灵活的数据组合方式。理解并熟练使用这些函数,可以提升你在数据库操作中的效率,特别是在处理复杂的...

    mysql字符串连接函数

    ### MySQL字符串连接函数详解 在处理数据库中的字符串操作时,MySQL提供了多种强大的工具来帮助我们进行数据处理。本文主要介绍几种常用的字符串连接函数,包括`CONCAT()`、`CONCAT_WS()`以及`GROUP_CONCAT()`函数...

    详细sqli-labs(1-20)通关讲解

    - 使用 `group_concat()` 函数将表名合并成一条记录输出。 - **第五步**:获取特定表的字段名。 - 输入:`?id=-1'union select 1,2,group_concat(column_name) from information_schema.columns where table_name...

    SQLi-LABS Page-1(Basic Challenges)1-22关

    ### SQLi-LABS Page-1 (Basic Challenges)1-22关详解 #### Less1: GET 字符串型基于错误的单引号的注入 在本关中,我们需要利用一个带有`id`参数的GET请求来进行SQL注入。当尝试输入`id=1`时,并在URL末尾添加单...

    MySQL常用聚合函数详解

    一、AVG AVG(col) 返回指定列的平均值 二、COUNT COUNT(col) 返回指定列中非NULL值...GROUP_CONCAT([DISTINCT] expr [,expr …]  [ORDER BY {unsigned_integer | col_name | expr}  [ASC | DESC] [,col_name …]]  

    PLSQL单行函数和组函数详解

    但有些函数如`CONCAT`、`DECODE`、`DUMP`、`NVL`和`REPLACE`在遇到NULL时会返回非NULL值。`NVL`函数尤其重要,因为它允许我们为NULL值提供默认值。例如,`NVL(bonus, 0)`会在奖金为空(NULL)时将其替换为0。 在...

    php手工注入.doc

    3. **使用`GROUP_CONCAT`和`LIMIT`**:为了快速获取所有表名,攻击者可以使用`GROUP_CONCAT`函数将多个表名合并为一个字符串,然后通过`CONCAT`函数在结果中插入分隔符。这比逐个尝试`LIMIT`更有效率。 4. **字段...

    程序员面试--选择题.pdf,这是一份不错的文件

    4. 分组与聚合函数:第45题中的答案二使用了GROUP BY语句来按照year进行分组,并使用GROUP_CONCAT函数将同一年份的所有amount组合成一个字符串,展示了SQL的聚合功能。 5. 最大值查询:第46题要求查找薪水高于其...

    用Distinct在MySQL中查询多条不重复记录值,绝对的物有所值

    在复杂的查询需求下,比如我们需要获取每个`name`对应的`id`列表,这时`GROUP_CONCAT`函数就派上了用场。`GROUP_CONCAT`可以将同一组内的一列值连接成一个字符串,结合`DISTINCT`,可以实现对多个字段的高效处理: ...

    java_lang包详解.pdf

    《java_lang包详解》 Java语言的核心库之一就是java.lang包,它包含了Java程序中最基础、最核心的类和接口。由于这个包是自动导入到每个Java程序中的,所以理解和掌握其中的类和接口对于编写Java代码至关重要。下面...

Global site tag (gtag.js) - Google Analytics