假设有以下数据:

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 语句的过程:

  1. 子查询 numbers 获取每行数据中竖线的个数(即要拆分的值的个数),并将其命名为 count
  2. numbers 子查询和原表 table_name 进行内连接,以获取每行数据的 idvalue
  3. 在外层 SELECT 语句中使用 SUBSTRING_INDEX 函数拆分每行数据的 value,并使用 SUM 函数求和每行拆分后的值。
  4. 最后通过 GROUP BY 语句按照每行的 id 进行分组。

以上 SQL 语句的执行结果为:

id | total
1  | 10
2  | 11
3  | 8

即每行数据拆分后的值的总和。

mysql 根据竖线拆分 并根据每行拆分的值求和

原文地址: https://www.cveoy.top/t/topic/xIk 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录