需要有关MySQL DISTINCT + COUNT查询的帮助

时间:2010-10-10 03:23:18

标签: php mysql distinct

我有一个名为“r”的表,在该表中我存储了id,ip和country。我正在运行此查询:

SELECT  r.country, count(rr.ip), count(DISTINCT rr.ip) 
FROM `r` 
LEFT JOIN r rr 
ON r.country = rr.country 
GROUP BY r.country

我确实得到了包含列的行:“country”;“number”;“number”; 但两个“计数()”并没有显示我想要显示的内容(每个国家的原始/唯一ips的数量),我不知道为什么。例如,对于US,我看到> 2000个唯一的ips,但我在数据库中只有500个条目。我的查询出了什么问题?

我想从数据库中检索的是包含列的行列表:countries + count raw ips + count unique ips。 (与每个国家/地区相关的计数),我的意思是检索不同国家/地区的列表并计算ips一个(不必进行多个查询)。

3 个答案:

答案 0 :(得分:1)

SELECT  r.country, count(r.ip), count(DISTINCT r.ip) 
FROM `r`
GROUP BY r.country

答案 1 :(得分:0)

像(完全未经测试)的东西:

SELECT  
   r.country, 
   count(r.ip), 
   (SELECT COUNT(DISTINCT rr.ip) from r rr where rr.country = r.country)
FROM 
   r r
GROUP BY 
   r.country 

答案 2 :(得分:0)

为什么你需要在这里自我加入?在sqlite中你所拥有的快速肮脏的设置我能够做到

 SELECT country, count(ip), count(DISTINCT ip) FROM r GROUP BY country

......我得到了预期的结果。