2015-10-07 2 views
1

Вопрос стол:Как считать вхождения в столбце, разделенном запятой?

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 

ответ

2

Вы можете использовать:

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 
+1

ваш ответ настолько велик, что вы так много, это то, что я хочу ... – theinlwin

+0

как можно подсчитать значение? – theinlwin

+0

@theinlwin Я не расстроен ваш последний вопрос – lad2025

2

Вы можете просто попробовать, как это:

SELECT COUNT(*) FROM my_table WHERE tags like '%css%'; 
SELECT COUNT(*) FROM my_table WHERE tags like '%html%'; 
SELECT COUNT(*) FROM my_table WHERE tags like '%javascript%'; 
SELECT COUNT(*) FROM my_table WHERE tags like '%php%'; 

Другой способ заключается в использовании его как это:

(LENGTH(`tags`) - LENGTH(REPLACE(`tags`, 'searchword', '')))/LENGTH('searchword') 
+0

спасибо, но я хотел то же значение каждого счета формы таблицы внутри – theinlwin

+0

@theinlwin: - 'но я хотел то же значение каждого счета формы таблицы inside' Я не уверен, что вы имеете в виду? –

+0

: См. Http://sqlfiddle.com/#!2/eeda7/9 – theinlwin

Смежные вопросы