group_concat用运 属于同一组统计

本文介绍 SQL 中 group_concat() 函数的应用场景与使用方法,通过实例展示如何结合分组查询来聚合相同组内的记录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


http://www.cnblogs.com/wangtao_20/archive/2011/02/23/1961860.html

group_concat()会计算哪些行属于同一组,将属于同一组的列显示出来。要返回哪些列,由函
数参数(就是字段名)决定。分组必须有个标准,就是根据group by指定的列进行分组。



SELECT u.truename,u.city,u.company,u.job,u.about,e.apply_imgs,user.email,group_concat(field_id order by field_id) from user_profile u
          LEFT JOIN expert_apply_new e on u.id = e.userid
          LEFT JOIN user on u.id = user.id
LEFT JOIN field_goodat on field_goodat.user_id = u.id
where e.userid = 51343 and e.check_status = 1 ORDER BY e.apply_time



### GROUP_CONCAT 函数的用法和语法 #### 1. 基本定义 `GROUP_CONCAT()` 是 MySQL 中的一个聚合函数,用于将分后的多个值连接成单个字符串。它通常与 `GROUP BY` 结合使用,以便按特定列对数据进行分后再执行操作。 其基本语法如下: ```sql GROUP_CONCAT([DISTINCT] expression [ORDER BY sorting_expression ASC/DESC] SEPARATOR separator) ``` - **expression**: 被连接的表达式或字段名。 - **DISTINCT (可选)**: 如果指定,则会去除重复值后再进行拼接。 - **ORDER BY (可选)**: 定义结果集中各值的排列顺序。 - **SEPARATOR (可选)**: 指定用来分隔各个值的字符,默认为逗号 `,`。 --- #### 2. 示例说明 ##### 示例 1:简单使用 假设有一张表 `employees`,结构如下: | id | name | department | |----|---------|------------| | 1 | Alice | HR | | 2 | Bob | IT | | 3 | Charlie | IT | 查询每个部门的所有员工姓名列表: ```sql SELECT department, GROUP_CONCAT(name) AS employees_list FROM employees GROUP BY department; ``` 结果可能为: | department | employees_list | |------------|----------------------| | HR | Alice | | IT | Bob,Charlie | 此示例展示了如何将同一部门的员工名字合并到一个字符串中[^1]。 --- ##### 示例 2:去重与自定义分隔符 继续以上述表格为例,如果存在重复的名字,并希望以冒号作为分隔符: ```sql SELECT department, GROUP_CONCAT(DISTINCT name ORDER BY name DESC SEPARATOR ':') AS unique_employees FROM employees GROUP BY department; ``` 这里引入了 `DISTINCT` 来移除重复项,同时通过 `ORDER BY` 控制排序方式,并设置分隔符为 `:`[^2]。 --- ##### 示例 3:动态 SQL 构建 在某些情况下,可以利用 `GROUP_CONCAT` 动态生成复杂的 SQL 查询片段。例如,在一张产品表 `products` 中有不同类别的商品名称,可以通过以下方法获取类别数: ```sql SELECT GROUP_CONCAT(DISTINCT CONCAT('\'', category, '\'')) AS categories FROM products; ``` 上述代码的结果可能是 `'Electronics','Books','Clothing'` 这样的字符串形式,便于后续处理[^3]。 --- ##### 示例 4:统计与关联 当需要统计某个分类下对应的文章 ID 列表时,也可以借助该函数完成复杂需求。比如下面这条语句能够计算每篇文章所属分类的数量及其对应的 ID 集合: ```sql SELECT ar_cid, COUNT(*) AS cidnum, GROUP_CONCAT(id) AS ids FROM ke_article GROUP BY ar_cid ORDER BY cidnum DESC; ``` 这不仅实现了数量汇总,还提供了具体记录编号的信息集合[^4]。 --- ### 总结 综上所述,`GROUP_CONCAT` 提供了一种灵活的方式来合数据库中的多行数据至单一字符串输出,适用于多种业务逻辑场景下的数据分析工作流之中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值