Mysql
 sql >> Base de données >  >> RDS >> Mysql

Requête pour compter les mots distincts de toutes les valeurs d'une colonne

Pas de manière facile. Si vous connaissez le nombre maximum de mots, vous pouvez faire quelque chose comme ceci :

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;

Notez que cela ne fonctionne que si les mots sont séparés par des espaces simples. Si vous avez un dictionnaire séparé de tous les mots possibles, vous pouvez également l'utiliser, quelque chose comme :

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