我有一个 mysql 表,如下所示,
id reasonCode
------ ------------------
1 0, 1
2 0
3 1, 2, 3
4 2
5 1, 0
我想要输出为
reasonCode occurrences
0 3
1 3
2 2
3 1
我尝试了“group by”,但它给出了类似这样的东西。
reasonCode occurrences
0, 1 1
0 1
1, 2, 3 1
2 1
1, 0 1
如果有人知道如何做到这一点,我们将不胜感激。
最佳答案
尝试这个查询
SELECT Reason,COUNT(Reason) FROM
(
SELECT
id,
SUBSTRING_INDEX(SUBSTRING_INDEX(reasoncode, ',', n.digit+1), ',', -1) Reason
FROM
table1
INNER JOIN
(SELECT 0 digit UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3) n
ON LENGTH(REPLACE(reasoncode, ',' , '')) <= LENGTH(reasoncode)-n.digit
ORDER BY
id,
n.digit
) T
Group By Reason;
<强> SQL FIDDLE
输出将是:
REASON OCCURANCES
0 3
1 3
2 2
3 1
关于mysql 计算多路复用条目的多次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22854884/