MySQL奇怪的事情正在发生

时间:2013-03-11 17:56:30

标签: php mysql

我有一个mysql行,我试图获得按省份分组的不同数量的电子邮件地址。它似乎给出了奇怪的价值观。

如果我为每个省执行以下操作(为省计算不同的电子邮件地址)

SELECT COUNT(DISTINCT(email_address)) as COUNT 
FROM entries 
WHERE subscribe='1' 
AND province='ns'

并将它们全部添加。如果我这样做的话,我会得到一个大约200多的数字

SELECT COUNT(DISTINCT(email_address)) as COUNT 
FROM entries 
WHERE subscribe='1'

也匹配

SELECT COUNT(DISTINCT(email_address)) as COUNT 
FROM entries 
WHERE subscribe='1' 
AND province IN('ns','nb','pei')

但不匹配

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

如果我这样做

SELECT COUNT(DISTINCT(email_address)) as COUNT 
FROM entries 
WHERE subscribe='1'

所以第二个和第四个匹配,第一个和第三个和第五个匹配。但是第2 /第4比第1 /第3 /第5更多200。

我想要的是不同的电子邮件地址的数量,其中订阅是1按省分组。这似乎是不可能的。

1 个答案:

答案 0 :(得分:0)

电子邮件地址是否可能与多个省绑定?您可以执行查询来测试此

SELECT email_address, count(distinct province)
FROM entries
WHERE subscribe = '1'
GROUP BY email_address HAVING count(distinct province) > 1

这可能是你的差异所在

无论哪种方式,此查询都会为您提供您正在寻找的内容

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