2012-03-20 22 views
6

मैं वास्तव में एक एसक्यूएल क्वेरी के साथ अटक गया हूं ... मुझे उम्मीद है कि कोई मेरे लिए कुछ प्रकाश डालने में मदद कर सकता है।MySQL अद्वितीय मानों का चयन

यहाँ मैं अपनी तालिका में डुप्लिकेट डेटा होते हैं, मैं, ईमेल के आधार पर गैर दोहराया इस तालिका से सभी डेटा बाहर निकलने के लिए चाहते हैं मेरी मेज कैसा दिखाई देता है

mysql> show fields from france_data; 
+----------+-------------+------+-----+---------+----------------+ 
| Field | Type  | Null | Key | Default | Extra   | 
+----------+-------------+------+-----+---------+----------------+ 
| id  | int(11)  | NO | PRI | NULL | auto_increment | 
| email | varchar(45) | YES |  | NULL |    | 
| name  | varchar(45) | YES |  | NULL |    | 
| lastname | varchar(45) | YES |  | NULL |    | 
| quality | varchar(45) | YES |  | NULL |    | 
| country | varchar(45) | YES |  | NULL |    | 
| state | varchar(45) | YES |  | NULL |    | 
| year  | varchar(45) | YES |  | NULL |    | 
| owner | varchar(45) | YES |  | NULL |    | 
+----------+-------------+------+-----+---------+----------------+ 
9 rows in set (0.00 sec) 

यहाँ पकड़ है।

मैं इस तरह एक साधारण गिनती भाग गया:

mysql> select count(*) from france_data; 

और इस परिणाम सेट है:

+----------+ 
| count(*) | 
+----------+ 
| 2405259 | 
+----------+ 
1 row in set (0.01 sec) 

अब मैं इस तरह एक गणना भागने की कोशिश की:

mysql> select count(*) from france_data group by email; 

बस यह देखने के लिए कि मेरे पास कितने अद्वितीय रिकॉर्ड हैं। दुर्भाग्य से इस बार बाहर।

क्या कोई जानता है कि मैं अद्वितीय पंक्तियों की गिनती कैसे कर सकता हूं और उसी प्रकार का चयन कैसे कर सकता हूं?

उत्तर

13

इस

SELECT COUNT(DISTINCT email) FROM france_data 
+0

Thats महान प्रयास करें !! गिनती काम करता है :) लेकिन अब मैंने COUNT() के बिना एक ही क्वेरी की कोशिश की है। मुझे यकीन नहीं है कि इसे चलाने में लंबा समय लगता है या यदि यह लटक रहा है और काम नहीं कर रहा है। क्या मैं यह चुनता हूं? 'France_data से DISTINCT ईमेल चुनें;' – Beyerz

+0

मुझे लगता है कि आप LIMIT कमांड [link] (http://php.about.com/od/mysqlcommands/g/Limit_sql.htm) – punny

+0

के साथ 1 से अधिक कथन क्वेरी को विभाजित कर सकते हैं मैं 500 पंक्तियों पर गधे लगाए जाने के परिणामस्वरूप 'सीमा 0,500' का उपयोग करूँगा, फिर केवल अलग-अलग मूल्य लौटाए जा रहे हैं, जिसके परिणामस्वरूप मुझे 500 से कम पंक्तियों की वापसी हो रही है? – Beyerz

3

कोशिश आप ई-मेल के आधार पर अद्वितीय पंक्तियों में देख रहे हैं, एक सरल

select count(distinct email) from france_data 

चाल करना चाहिए कृपया।

आप भी प्रत्येक ई-मेल के डुप्लिकेट गिनती देखने के लिए देख रहे हैं, इस प्रयास करें:

select email, count(*) as cnt from france_data group by email order by cnt desc; 
+0

गिनती अलग-अलग मेरे लिए काम कर रही है, मुझे यह जानने की ज़रूरत नहीं है कि यह कितनी बार डुप्लीकेट किया गया है, लेकिन मुझे परिणाम तालिका आउटपुट करने की आवश्यकता है जो ईमेल फ़ील्ड्स के साथ सभी फ़ील्ड अद्वितीय दिखता है। – Beyerz

+0

वाह, वह दूसरी क्वेरी बिल्कुल वही है जो मैं ढूंढ रहा था! किसी भी तरह से मैं कभी नहीं पचता था कि 'समूह द्वारा' व्यवहार कैसे करता है। बहुत धन्यवाद @ निखिल! –

0

इस

select count(distinct email) 
from france_data 
order by email; 
संबंधित मुद्दे