2012-12-11 65 views
1

我有一個表有一堆條目(標準的東西,電子郵件,名稱,城市等),以及訂閱選項,以通知他們有關未來的東西。一點點的MySQL神祕

我想知道每個省選擇多少個(訂閱字段爲1)。而且我也試圖導出這個巨大的清單不同的電子郵件地址。

所以我有以下兩個查詢

獲取從表中的所有值輸出。

SELECT DISTINCT(email_address), first_name, last_name, street_address, city, province, postal_code, phone FROM entries WHERE subscribe='1' GROUP BY email_address 

從表中獲得一個計數(看起來像省|#)。現在

SELECT province, COUNT(DISTINCT email_address) FROM entries WHERE subscribe='1' GROUP BY province; 

我的問題是第一個查詢返回結果1124,第二查詢加起來1136結果。因此,有12個條目即將出現。

我怎樣才能找出有什麼問題,或者我的查詢有什麼問題?

回答

2

你的問題是你有一些省份重複的電子郵件地址。

第一個查詢消除了全部重複的電子郵件地址。第二個查詢只會消除重複的電子郵件地址給定省內

如果你不關心哪個省的一個重複的電子郵件進行計數,可以消除重複,像這樣:

SELECT province, COUNT(email_address) 
FROM (
    SELECT email_address, MAX(province) as province 
    FROM entries 
    GROUP BY email_address 
) 
GROUP BY province 
+0

那我怎麼能修好那個哈哈? – Steven

+0

@Steven - 不確定,如果你有一個與省'ON'和'AB'相關的電子郵件地址,哪一個應該算數?我不認爲那裏有一個很好的答案。 –

+0

好問題大聲笑,我不知道我是否可以回答。我可能需要考慮一下。讓我回到你身邊。 – Steven