我有一个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按省分组。这似乎是不可能的。
答案 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