ठीक है, यह एक कुत्ते की तरह चलता है और एक ही डिलीमीटर के साथ काम करने तक ही सीमित है, लेकिन उम्मीद है कि आपको एक विचार मिलेगा।
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
यह एक एकल स्तंभ मान के साथ 10 पंक्तियों के साथ मैं कहा जाता है के साथ एक मेज पूर्णांक कहा होने पर निर्भर करता 0 9 को यह करने के लिए ~ 1000 शब्दों के साथ copes लेकिन आसानी से अधिक से निपटने के लिए बदला जा सकता है (लेकिन और भी धीमा हो जाएगा)।
क्या आप एकाधिक शब्दों वाले एक फ़ील्ड से डेटा का विश्लेषण कर रहे हैं? थोड़ा और जानकारी उपयोगी होगी। – Tom
हां, एकाधिक शब्द तारों के साथ एकल फ़ील्ड (कॉलम)। – Codex73
मैंने php स्क्रिप्ट में कुछ ऐसा ही किया है। यकीन नहीं है कि मैं इसे एक एकल SQL कथन में करने का प्रयास करूंगा। एक समस्या कॉलम को शब्दों में विभाजित कर रही है और प्रत्येक को एक पंक्ति के रूप में लौट रही है (मैंने इसके लिए नियमित अभिव्यक्ति का उपयोग किया), लेकिन फिर शब्दों के बीच ब्रेक के रूप में आप किस चीज की देखभाल करते हैं, और यह भी कि आप बहुवचन के साथ कैसे निपटना चाहते हैं आप उन्हें एक ही शब्द या 2 अलग-अलग शब्दों के रूप में व्यवहार करना चाहते हैं)। कॉलम को शब्दों में विभाजित करने, एकाधिक पंक्तियों को वापस करने के लिए, फिर कुछ एसक्यूएल के भीतर से गणना या घटनाओं के लिए इसका उपयोग करके MySQL फ़ंक्शन लिखना सबसे आसान हो सकता है। – Kickstart