MySQL关联两表按No分组求和并合并客户字段的实现需求
MySQL按订单号分组合并客户并求和金额
表结构与数据
order表(注意order是MySQL保留字,使用时需用反引号包裹)
| No | Customer |
|---|---|
| 1 | A |
| 1 | c |
| 2 | b |
customer_amount表
| Customer | Amount |
|---|---|
| A | 1 |
| A | 2 |
| C | 7 |
| B | 5 |
需求
通过Customer字段关联两张表,按No分组:
- 将同组的
Customer合并为逗号分隔的字符串 - 对关联的
Amount字段求和
解决方案SQL
SELECT o.`No`, GROUP_CONCAT(o.Customer) AS Customers, SUM(ca.Amount) AS Amount FROM `order` o LEFT JOIN customer_amount ca ON UPPER(o.Customer) = UPPER(ca.Customer) GROUP BY o.`No`;
关键说明
GROUP_CONCAT():自动将分组内的Customer值用逗号拼接,默认分隔符为逗号,无需额外指定。UPPER():统一转换为大写,解决Customer字段大小写不匹配的问题(如原数据中的c和C),确保关联逻辑正确。SUM():对分组内所有关联的Amount值进行求和计算。
执行结果
| No | Customers | Amount |
|---|---|---|
| 1 | A,c | 10 |
| 2 | b | 5 |
内容的提问来源于stack exchange,提问作者Yahia Baiba
相关产品推荐
相关产品推荐

