• mysql中GROUP_CONCAT函数详解


    GROUP_CONCAT是MySQL中的一个聚合函数,它用于将多行数据按照指定的顺序连接成一个字符串,并返回结果。下面是对GROUP_CONCAT函数的详解:

    语法:
    GROUP_CONCAT([DISTINCT] expr [,expr …]
    [ORDER BY {unsigned_integer | col_name | expr}
    [ASC | DESC] [,col_name …]]
    [SEPARATOR str_val])

    参数解释:

    • DISTINCT: 可选参数,用于指定是否对结果进行去重。
    • expr: 要连接的列或表达式。
    • ORDER BY: 可选参数,用于指定连接结果的排序方式。
    • ASC | DESC: 可选参数,用于指定排序的升序或降序。
    • SEPARATOR: 可选参数,用于指定连接结果中列之间的分隔符。

    示例:
    假设有一个表"orders",包含以下数据:

    1. +---------+------------+
    2. | order_id| product |
    3. +---------+------------+
    4. | 1 | Apple |
    5. | 1 | Orange |
    6. | 2 | Banana |
    7. | 3 | Apple |
    8. +---------+------------+

    我们可以使用以下查询:

    1. SELECT order_id, GROUP_CONCAT(product ORDER BY product SEPARATOR ', ') AS products
    2. FROM orders
    3. GROUP BY order_id;

    结果:

    1. +---------+-----------------------+
    2. | order_id| products |
    3. +---------+-----------------------+
    4. | 1 | Apple, Orange |
    5. | 2 | Banana |
    6. | 3 | Apple |
    7. +---------+-----------------------+

    注意事项:

    • GROUP_CONCAT默认使用逗号作为分隔符,如果需要使用其他分隔符,可以使用SEPARATOR参数进行指定。
    • 如果连接的结果超出了group_concat_max_len变量的值,默认情况下,结果会被截断。可以通过设置该变量的值来调整连接结果的最大长度。
    • GROUP_CONCAT函数只能在SELECT语句中使用,不能用于其他SQL语句中。

    初始化SQL

    1. create table orders
    2. (
    3. order_id int null,
    4. product varchar(20) null
    5. );
    6. INSERT INTO test.orders (order_id, product) VALUES (1, 'Apple');
    7. INSERT INTO test.orders (order_id, product) VALUES (1, 'Orange');
    8. INSERT INTO test.orders (order_id, product) VALUES (2, 'Banana');
    9. INSERT INTO test.orders (order_id, product) VALUES (3, 'Apple');

    执行SQL

    1. select *
    2. from orders;
    3. select order_id, GROUP_CONCAT(product)
    4. from orders
    5. GROUP BY order_id;
    6. SELECT order_id, GROUP_CONCAT(product ORDER BY product SEPARATOR ', ') AS products
    7. FROM orders
    8. GROUP BY order_id;

  • 相关阅读:
    Python与CAD系列基础篇(七)创建单行、多行文本并修改样式
    植物组织培养第五弹!worthington组织培养术语速速养成
    Spark SQL数据通用保存数据_大数据培训
    pytorch 多GPU训练
    java: idea中代码自动布局优化、注释、复用等快捷键为
    Solidity 小白教程:7. 映射类型 mapping
    MYSQL误删数据恢复
    Android 刘海屏适配指南
    [Windows 10] 任务栏按钮不显示正在打开的窗口了(打开任何程序任务栏图标按钮都不显示)
    Spring中的拦截器HandlerInterceptor
  • 原文地址:https://blog.csdn.net/qq_29752857/article/details/132800271