Đúng vậy, điều này chạy như một con chó và bị giới hạn trong việc làm việc với một dấu phân cách duy nhất, nhưng hy vọng sẽ cung cấp cho bạn ý tưởng.
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
Điều này phụ thuộc vào việc có một bảng được gọi là số nguyên với một cột duy nhất được gọi là i với 10 hàng với các giá trị từ 0 đến 9. Nó có thể chứa tới ~ 1000 từ nhưng có thể dễ dàng thay đổi để đối phó với nhiều hơn (nhưng sẽ chậm hơn nữa).