2011-03-09 80 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'