前言
有时候迫不得已把数据存在了一起,而没有使用关联多个表格的方式,但是如果想要拆开多行进行计算时就有点头疼了,然鹅还是有办法处理的,具体如下所示。
数据表原格式
digits | score |
---|---|
A+B+C | 1 |
C+D | 2 |
A+C | 1 |
数据表改进格式
digit | sum_score |
---|---|
A | 2 |
B | 1 |
C | 4 |
D | 2 |
MySQL语句
SELECT
c.digit,
SUM(score) AS sum_score
FROM
(
SELECT
a.score,
SUBSTRING_INDEX(
SUBSTRING_INDEX(
a.digits,
"+",
b.help_topic_id + 1
),
"+" ,- 1
) AS digit
FROM
table_name a
JOIN mysql.help_topic b ON b.help_topic_id < (
length(a.digits) - length(REPLACE(a.digits, '+', '')) + 1
)
) AS c
GROUP BY
c.digit