sql >> Databasteknik >  >> RDS >> Mysql

Fråga för att räkna de distinkta orden av alla värden i en kolumn

Inte på ett lätt sätt. Om du vet det maximala antalet ord kan du göra något så här:

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;

Observera att detta bara fungerar om orden är åtskilda med enstaka mellanslag. Om du har en separat ordbok med alla möjliga ord, kan du också använda den, något som:

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


  1. Råd om att strukturera ett kommentarsystem

  2. Konvertera värde från strängrepresentation i bas N till numeriskt

  3. behöver hjälp med att optimera Oracle-frågan

  4. currval har ännu inte definierats denna session, hur får man flersessionssekvenser?