我有一些疑问以确定本月返回的 IP 数量。如果 IP 在同一天返回,则不算“返回”。仅当 IP 在另一天返回时才算数。这是我的查询,但我的逻辑或查询有问题:
SELECT COUNT( ip )
FROM ipAll
WHERE YEAR( DATE ) = '2015'
AND MONTH( DATE ) = '12'
所有 IP:875
SELECT COUNT( DISTINCT ip )
FROM ipAll
WHERE YEAR( DATE ) = '2015'
AND MONTH( DATE ) = '12'
不同的IP: 588
本月返回的IP:875-588=287;
SELECT ip, COUNT( ip ) AS matches
FROM ipAll
WHERE YEAR( DATE ) = '2015'
AND MONTH( DATE ) = '12'
GROUP BY ip
HAVING matches >1
ORDER BY matches DESC
返回的行数:104
所以,我有点困惑。第一个结果表示本月返回的 IP 有 287 个,但第二个结果表示本月返回的 IP 有 104 个。我做错了什么,或者我混淆了什么逻辑?
最佳答案
第二个查询为您提供不同的 IP。
第三个查询告诉您,您有 104 个 ip 出现了 2 次或更多次。
这里并不矛盾,你可能有很多ip返回两次以上。第二个和第三个的结果不一定等于第一个。
关于Mysql查询逻辑没有得到相同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34466771/