Mysql
 sql >> Database >  >> RDS >> Mysql

determinare il set di parole più utilizzato php mysql

Esatto, funziona come un cane ed è limitato a lavorare con un singolo delimitatore, ma si spera che ti dia un'idea.

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

Ciò si basa sull'avere una tabella chiamata interi con una singola colonna chiamata i con 10 righe con valori da 0 a 9. Gestisce fino a ~ 1000 parole ma può essere facilmente modificata per far fronte a più (ma rallenterà ancora di più).