MySQL की गिनती 2 से अधिक होती है


91

मेरे पास निम्न तालिका संरचना है

+  id  +  word  +
+------+--------+

किसी दिए गए पाठ के निचले हिस्से में शब्दों से तालिका भर जाती है, इसलिए पाठ

नमस्ते अलविदा नमस्ते

में परिणाम होगा

+  id  +  word  +
+------+--------+
+   1  + hello  +
+------+--------+
+   2  + bye    +
+------+--------+
+   3  + hello  +
+------+--------+

मैं एक सेलेक्ट क्वैरी बनाना चाहता हूं जो उन शब्दों की संख्या को लौटाएगा जो टेबल में कम से कम दो बार दोहराए जाते हैं (जैसे हैलो)

SELECT COUNT(id) FROM words WHERE (SELECT COUNT(words.word))>1

टेबल बड़ा होने पर कौन सा कोर्स इतना गलत और सुपर ओवरलोडिंग है। इस तरह के उद्देश्य को प्राप्त करने के बारे में कोई विचार? ऊपर दिए गए उदाहरण में, मैं 1 की उम्मीद करूंगा


किसी और को "सैगिंग" रस्सी पुल की तरह अंडरस्कोर देखकर?
बूंद

जवाबों:


227

उन शब्दों की एक सूची प्राप्त करने के लिए जो एक से अधिक बार एक साथ दिखाई देते हैं कि वे कितनी बार होते हैं, GROUP BY और HAVING के संयोजन का उपयोग करें:

SELECT word, COUNT(*) AS cnt
FROM words
GROUP BY word
HAVING cnt > 1

उपरोक्त परिणाम सेट में शब्दों की संख्या ज्ञात करने के लिए, एक उपश्रेणी के रूप में उपयोग करें और बाहरी क्वेरी में पंक्तियों को गिनें:

SELECT COUNT(*)
FROM
(
    SELECT NULL
    FROM words
    GROUP BY word
    HAVING COUNT(*) > 1
) T1

1
बस एक एडऑन, आप "होने" में भी उपनाम का उपयोग कर सकते हैं। चयनित शब्दों की तरह, COUNT (*) AS cnt FROM शब्दों के समूह से शब्द द्वारा HAVING cnt> 1
वैभव जैन

17
SELECT count(word) as count 
FROM words 
GROUP BY word
HAVING count >= 2;

CodeIgniter भी होने का समर्थन करता है, इसलिए यह एकदम सही था। धन्यवाद
जून Bae

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.