mysql 计算多路复用条目的多次出现

标签 mysql

我有一个 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/

相关文章:

mysql - 如何通过多个元组(行)找到共享一个属性(列)的对?

php - 我的 SQL 计数返回许多 "1"实例

php - 查询生成器上的 laravel orderByRaw()

MySQL - 查找 MIN 但不为零

mysql - 选择出现次数为零的每月计数

mysql - 如何将值直接插入到zabbix Mysql数据库中

php - php/mysql中处理大量数据

MySQL 关系 View - 连接?

mysql - 需要关于优化 MYSQL 查询的建议

php - 如何使用数组进行字符串循环?