2011-03-09 44 views
2

我想指望使用MySQL唯一的IP地址总数,这是我为我的查询:计数唯一的IP地址与MySQL

SELECT COUNT(`id`) as `count` FROM `pageviews` WHERE `timestamp` BETWEEN '1299675600' AND '1299762000' GROUP BY `client_ip` 

我唯一的问题,就是它计数这个IP地址所产生的结果是否有一种方法可以在MySQL中统计每个IP地址的数量,并将它们统一起来,而不是将它们分组然后对它们进行计数。

干杯。

+1

你有没有试着用'选择DISTINCT' – allenskd 2011-03-09 22:20:56

回答

4

您可以使用COUNT(DISTINCT ...)来统计唯一IP地址的数量。我并不完全相信你的问题是什么,但你可以试试这个,还是适应它以满足您的需求:

SELECT COUNT(DISTINCT client_ip) as `count` 
FROM `pageviews` 
WHERE `timestamp` BETWEEN '1299675600' AND '1299762000' 
+0

首先评论,最好的答案。干杯! – 2011-03-09 22:27:48

0

下应该做的伎俩:

SELECT COUNT(DISTINCT `client_ip`) as `count` FROM `pageviews` WHERE `timestamp` BETWEEN '1299675600' AND '1299762000' 

有没有必要组通过client_ip,因为您已经可以使用DISTINCT关键字查询不同的值。

1

什么:

select count(distinct client_ip) as total_num 
from pageviews 
where `timestamp` BETWEEN '1299675600' AND '1299762000' 

在那里,你会算的distinct IP地址的数量 - 这应该是你想要的东西;并且不再需要group by条款。

0

您可以在COUNT()使用DISTINCT:

SELECT COUNT(DISTINCT client_ip) as `count` 
FROM `pageviews` WHERE `timestamp` BETWEEN '1299675600' AND '1299762000'