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

determinando o conjunto de palavras mais usado php mysql


Certo, isso funciona como um cachorro e está limitado a trabalhar com um único delimitador, mas espero que dê uma ideia.
SELECT aWord, COUNT(*) AS WordOccuranceCount
FROM (SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(concat(SomeColumn, ' '), ' ', aCnt), ' ', -1) AS aWord
FROM SomeTable
CROSS JOIN (
SELECT a.i+b.i*10+c.i*100 + 1 AS aCnt
FROM integers a, integers b, integers c) Sub1
WHERE (LENGTH(SomeColumn) + 1 - LENGTH(REPLACE(SomeColumn, ' ', ''))) >= aCnt) Sub2
WHERE Sub2.aWord != ''
GROUP BY aWord
ORDER BY WordOccuranceCount DESC
LIMIT 10

Isso se baseia em ter uma tabela chamada inteiros com uma única coluna chamada i com 10 linhas com os valores de 0 a 9. Ela lida com até ~1000 palavras, mas pode ser facilmente alterada para lidar com mais (mas ficará ainda mais lenta).