2012-07-13 84 views
2

我需要計算一個MySQL數據庫中重複的電子郵件的數量,但沒有計算第一個(認爲原來的)。在此表中,查詢結果應該是單個值「3」(2個重複的[email protected]加上1個重複的[email protected])。如何找到沒有計算原來的重複計數

ID | Name | Email 
1 | Mike | [email protected] 
2 | Peter | [email protected] 
3 | Mike | [email protected] 
4 | Mike | [email protected] 
5 | Frank | [email protected] 
6 | Jim | [email protected] 

我目前的查詢產生不是一個數字,但多行,而不管這個電子郵件的許多副本是如何在表中每個電子郵件地址:

SELECT value, count(lds1.leadid) FROM leads_form_element lds1 LEFT JOIN leads lds2 ON lds1.leadID = lds2.leadID 
    WHERE lds2.typesID = "31" AND lds1.formElementID = '97' 
    GROUP BY lds1.value HAVING (COUNT(lds1.value) > 1) 
+0

你可以使用'SUM'爲'SUM(COUNT(lds1.leadid))' – hjpotter92 2012-07-13 22:16:03

回答

2

這不是一個查詢,所以我不確定它是否適用於您的情況,但您可以執行一個查詢來選擇總行數,第二個查詢選擇不同的電子郵件地址,然後減去這兩個。這將使你重複的總數...

select count(*) from someTable; 
select count(distinct Email) from someTable; 

其實,我不知道這是否會工作,但你可以嘗試做這一切在一個查詢:

select (count(*)-(count(distinct Email))) from someTable 

就像我說的,沒有經過測試,但讓我知道它是否適合你。

+0

的組合解決方案的工作 - 謝謝! – user1291842 2012-07-13 22:58:49

1

嘗試在子查詢中進行分組,然後進行總結。喜歡的東西:

select sum(tot) 
from 
(
    select email, count(1)-1 as tot 
    from table 
    group by email 
    having count(1) > 1 
)