如何通过在mysql中计算它们来拆分字符串标记和组?

时间:2018-01-22 07:36:53

标签: mysql sql

如何拆分字符串并通过拆分令牌对它们进行分组? 我想得到分组分裂的令牌每次计数。

我有一个varchar列,它存储一个可以用','分割的字符串。 下面是列的行数据。 (列名是LogData)

[LogData]
1,2,3,4

1,3,1,9

2,1,3

6,2

然后我想显示(选择)如下所示。

[token] [count]
  1    : 4
  2    : 3
  3    : 3
  4    : 1
  6    : 1
  9    : 1

如果可能的话,我可以通过一些解释得到答案吗? (我不擅长db)

1 个答案:

答案 0 :(得分:0)

使用和修改undefined_variable的注释,正确的查询如下所示:

SELECT value,COUNT(*) FROM
(SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(t0.logdata, ',', n.n), ',', -1) value
  FROM t0 CROSS JOIN 
  (
   SELECT a.N + b.N * 10 + 1 n
     FROM 
    (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a
   ,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b
    ORDER BY n 
   ) n
 WHERE n.n <= 1 + (LENGTH(t0.logdata) - LENGTH(REPLACE(t0.logdata, ',', '')))
 ORDER BY value) nt0 GROUP BY value