0

我创建了一个数据库来存储来自网站的统计信息,例如流量。我正在尝试在数据库中查询过去 30 天内捕获的唯一 IP 地址的数量;

SELECT COUNT(*) totalA FROM statistics GROUP by ipAddress 
AND DATE_SUB(CURDATE( ) ,INTERVAL 30 DAY) LIMIT 0, 30

但是查询只返回表中数据条目的数量。我使用了相同的查询减去日期过滤器并得到了正确的结果,所以只是日期过滤搞砸了

任何帮助将不胜感激谢谢

4

2 回答 2

0

我想这就是你要找的。基本上,我只是将您的日期代码放在 WHERE 子句中,并将其与表中的日期列进行比较。显然,您需要将“entryDate”更改为日期列的名称。

SELECT COUNT(*) AS totalA
FROM statistics
WHERE entryDate >= DATE(CURDATE()-INTERVAL 30 DAY)
GROUP BY ipAdress
于 2012-04-25T12:56:45.200 回答
0

这是因为你GROUP BYipAddress AND DATE_SUB(CURDATE( ), INTERVAL 30 DAY)并且这个表达式产生AND两个字段之间的逻辑,它只有 2 个可能的值。不过,您并不关心区分和请求只是count(*).

你可能想要的是:

SELECT ipAddress, DATE_SUB(CURDATE( ), INTERVAL 30 DAY), COUNT(*) AS totalA
  FROM statistics
 GROUP by ipAddress, DATE_SUB(CURDATE( ), INTERVAL 30 DAY)
 LIMIT 0, 30
于 2012-04-25T12:56:41.673 回答