mysql - 如何计算逗号分隔列中的出现次数?

标签 mysql split

问题表:

id          |   tags
--------------------------------------
1           |   css,javascript,html
2           |   mysql,sql,html  
3           |   css,spring,php      
4           |   css,java,html   

我正在尝试弄清楚如何返回字符串在每个标签 中出现的次数。

结果表:

tags          |   count
--------------------------------------
css           |   3
html          |   3 
javascript    |   1      
php           |   1

最佳答案

您可以使用:

SqlFiddleDemo

SELECT sub.val AS tags, COUNT(*) AS `count`
FROM
(
  SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(t.tags, ',', n.n), ',', -1) AS val
  FROM tab t 
  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(t.tags) - LENGTH(REPLACE(t.tags, ',', '')))
) sub
GROUP BY sub.val

关于mysql - 如何计算逗号分隔列中的出现次数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32985465/

相关文章:

javascript - 我想分离数组

c# - C#-拆分字符串问题

php - mysql查询获取连接3个表的计数

mysql - 在表中使用 if 语句插入之前触发

Ruby:拆分字符串而不删除分隔符

javascript - 如何从字符串数组中分割数字和字符串?

r - 如何在 r 的新列中拆分逗号

php - 使用 PDO 时重用变量

mysql - 从特定字段中查找 MySQL 中已定义字符串的最大值(以逗号分隔)

mysql - 真实世界总销售额 SQL 查询