Phải, điều này chạy như một con chó và bị giới hạn khi làm việc với một dấu tách đơn, nhưng hy vọng sẽ cung cấp cho bạn một ý 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
này dựa vào việc có một bảng gọi là số nguyên với một cột duy nhất gọi tôi với 10 dòng với các giá trị từ 0 đến 9. Nó phản ứng với lên đến ~ 1000 từ nhưng có thể dễ dàng được thay đổi để đối phó với hơn (nhưng sẽ làm chậm hơn nữa).
Bạn có đang phân tích dữ liệu từ một trường đơn lẻ với nhiều từ không? Một chút thông tin sẽ hữu ích. – Tom
Có, một trường (cột) với nhiều chuỗi từ. – Codex73
Tôi đã làm điều tương tự trong một tập lệnh php. Không chắc chắn tôi sẽ cố gắng làm điều đó trong một câu lệnh SQL đơn. Một vấn đề là chia cột thành các từ và trả về từng từ một hàng (tôi đã sử dụng cụm từ thông dụng cho điều này), nhưng sau đó xác định những gì bạn quan tâm như là sự ngắt quãng giữa các từ và cách bạn muốn xử lý số nhiều bạn muốn đối xử với họ như một từ hoặc 2 từ khác nhau). Có thể dễ nhất để viết một hàm MySQL để tách cột thành các từ, trả về nhiều hàng, sau đó sử dụng nó từ bên trong một số SQL để đếm hoặc xuất hiện. – Kickstart