Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Abfrage zum Zählen der unterschiedlichen Wörter aller Werte in einer Spalte

Nicht auf einfache Weise. Wenn Sie die maximale Anzahl von Wörtern kennen, können Sie Folgendes tun:

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;

Beachten Sie, dass dies nur funktioniert, wenn die Wörter durch einzelne Leerzeichen getrennt sind. Wenn Sie ein separates Wörterbuch mit allen möglichen Wörtern haben, können Sie auch dieses verwenden, etwa so:

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