Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Consulta para contar as palavras distintas de todos os valores em uma coluna


Não de uma maneira fácil. Se você souber o número máximo de palavras, poderá fazer algo assim:
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;

Observe que isso só funciona se as palavras forem separadas por espaços simples. Se você tiver um dicionário separado de todas as palavras possíveis, também poderá usá-lo, 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