mysql sum 计算以逗号间隔的字段
时间: 2023-07-28 20:21:45 浏览: 43
如果要计算以逗号间隔的字段的总和,可以使用MySQL内置函数`SUBSTRING_INDEX`和`REPLACE`来先将字段拆分成多个子字符串,然后再对这些子字符串进行求和。
假设我们有一个表`orders`,其中包含一个名为`items`的字段,该字段包含以逗号间隔的商品价格,如下所示:
```
+----+-----------------+
| id | items |
+----+-----------------+
| 1 | 10,20,30,40 |
| 2 | 5,15,25 |
| 3 | 100,200,300,400 |
+----+-----------------+
```
现在我们要计算`items`字段中所有商品价格的总和,可以使用以下查询语句:
```
SELECT SUM(SUBSTRING_INDEX(REPLACE(items, ',', '|'), '|', N)) AS total_price FROM orders
CROSS JOIN (
SELECT 1 AS N UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4
) numbers
WHERE N <= LENGTH(items) - LENGTH(REPLACE(items, ',', '')) + 1;
```
该查询语句中,我们使用`REPLACE`函数将逗号替换为竖线`|`,然后使用`SUBSTRING_INDEX`函数将字段拆分成多个子字符串。`CROSS JOIN`子句用于生成一个名为`numbers`的虚拟表,其中包含从1到4的数字。最后,我们使用`SUM`函数对所有子字符串进行求和,得到所有商品价格的总和。