sql >> Base de Datos >  >> RDS >> Mysql

Consulta para contar las distintas palabras de todos los valores en una columna

No de una manera fácil. Si conoce el número máximo de palabras, entonces puede hacer algo como esto:

select substring_index(substring_index(p.post, ' ', n.n), ' ', -1) as word,
       count(*)
from post p join
     (select 1 as n union all select 2 union all select 3 union all select 4
     ) n
     on length(p.post) - length(replace(p.post, ' ', '')) < n.n
group by word;

Tenga en cuenta que esto solo funciona si las palabras están separadas por espacios simples. Si tiene un diccionario separado de todas las palabras posibles, también puede usarlo, algo como:

select d.word, count(p.id)
from dictionary d left join
     posts p
     on concat(' ', p.post, ' ') like concat(' %', d.word, ' %')
group by d.word