2010-05-27 13 views
5

कैसे करें I डेटाबेस में टैग की एक सूची है।COUNT() या COUNT (*)

पूर्व:

villan 
hero 
spiderman 
superman 
superman 

मैं एक छाँटे गए और आरोही क्रम में टैग नामों की सूची समय की संख्या अद्वितीय टैग डेटाबेस में छपी प्राप्त करने के लिए करना चाहता था।

पूर्व:

SELECT hashtag.tag_name 
     , COUNT(*) AS number 
    FROM hashtag 
    GROUP BY hashtag.tag_name 
    ORDER BY hashtag.tag_name ASC 

यह सही परिणाम पैदावार:

hero  , 1 
spiderman , 1 
superman , 2 
villan , 1 

मैं इस पूरे सूची से भरा COUNT कैसे प्राप्त कर सकते हैं मैं इस कोड लिखा था। जवाब इस मामले में 4 होना चाहिए क्योंकि स्वाभाविक रूप से 4 पंक्तियां हैं। मुझे बयान में विफल होने के बिना सही COUNT() नहीं मिल रहा है।

मदद के लिए बहुत बहुत धन्यवाद! :)

उत्तर

6
SELECT COUNT(DISTINCT `tag_name`) FROM `hashtag` 
+0

धन्यवाद, यह आपको बहुत हल करता है, मुझे पता है कि मैंने इसके बारे में भी सोचा नहीं था। – ninu

+0

फिर मैं सराहना करूंगा ताकि आप मुझे 3k + एसएफ सदस्य बनाने के लिए स्वीकार कर सकें ;-) – zerkms

+1

मैं इसे करूँगा! इसके अलावा, मुझे लगता है कि आप उलझन में हैं; यह अपवित्र एसएफ पर आपके प्रतिनिधि को बिल्कुल नहीं बदलेगा :) –

1

उपयोग COUNT DISTINCT(hashtag.tag_name) - यह एक ही SELECT आप (बेशक एक UNION साथ छोड़कर) में नहीं जा सकते, लेकिन अपने आप में एक SELECT (या एक उपयुक्त UNION) पर यह दे देंगे परिणाम आप चाहते हैं।

0

मुझे अपने-एसक्यूएल में क्वेरी के बारे में निश्चित नहीं है लेकिन यह ऑरैकल के साथ ठीक काम करता है।

SELECT hashtag.tag_name, count(*) FROM hashtag GROUP BY cube(hashtag.tag_name) 
0

यह वास्तव में ऐसा करने के लिए के रूप में आप का वर्णन कर रहे हैं (जिसके परिणामस्वरूप सूची से भरा गिनती प्राप्त करने के लिए), आप की तरह, एक गिनती परिणाम की ले जाना चाहते हैं:

SELECT COUNT(*) AS uniquetags 
FROM (SELECT hashtag.tag_name, COUNT(*) AS number 
     FROM hashtag GROUP BY hashtag.tag_name 
     ORDER BY hashtag.tag_name ASC) 

बेशक ORDER BY खंड अनावश्यक है और बाहरी COUNT द्वारा निगल लिया जाता है, जैसा आंतरिक COUNT करता है।

इसके अतिरिक्त, के रूप में कुछ लोगों ने बताया है, इस के लिए शॉर्टकट एक COUNT DISTINCT है, के रूप में:

SELECT COUNT(DISTINCT hashtag.tag_name) 
FROM hashtag 

यह कर सकते हैं या और अधिक कुशलता से अनुक्रमित उपयोग नहीं कर सकते, पर क्या यह पता चलता है कि यह नहीं करता है 'के आधार टी सब कुछ गिनना है या नहीं। अधिक जानकारी वाला कोई व्यक्ति, कृपया टिप्पणी करने के लिए स्वतंत्र महसूस करें (या बस EXPLAIN एस को आजमाएं)।

संबंधित मुद्दे