mysql 根据竖线拆分 并根据每行拆分的值求和
假设有以下数据:
id | value
1 | 2|3|5
2 | 1|4|6
3 | 2|2|2|2
可以使用以下 SQL 语句,根据竖线拆分并求和:
SELECT id, SUM(SUBSTRING_INDEX(SUBSTRING_INDEX(value, '|', numbers.n), '|', -1)) AS total
FROM (
SELECT id, value, 1 + LENGTH(value) - LENGTH(REPLACE(value, '|', '')) AS count
FROM table_name
) AS numbers
JOIN table_name ON numbers.id = table_name.id
GROUP BY id;
解释一下 SQL 语句的过程:
- 子查询
numbers获取每行数据中竖线的个数(即要拆分的值的个数),并将其命名为count。 - 将
numbers子查询和原表table_name进行内连接,以获取每行数据的id和value。 - 在外层 SELECT 语句中使用
SUBSTRING_INDEX函数拆分每行数据的value,并使用SUM函数求和每行拆分后的值。 - 最后通过
GROUP BY语句按照每行的id进行分组。
以上 SQL 语句的执行结果为:
id | total
1 | 10
2 | 11
3 | 8
即每行数据拆分后的值的总和。
原文地址: https://www.cveoy.top/t/topic/xIk 著作权归作者所有。请勿转载和采集!