mysql sum 计算以逗号间隔的字段
时间: 2023-07-28 13:21:45 浏览: 167
如果要计算以逗号间隔的字段的总和,可以使用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`函数对所有子字符串进行求和,得到所有商品价格的总和。
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231044937.png)
![-](https://img-home.csdnimg.cn/images/20250102104920.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)