Mysql 查询逻辑没有得到相同的结果

Mysql query logic not getting the same results

我有几个问题想确定这个月有多少 IP 返回。如果 IP 在同一天返回,则不算 'coming back'。仅当 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

所以,我有点困惑。第一个结果说这个月有287个IP回来了,但是第二个结果说这个月有104个IP回来了。我做错了什么,或者我混淆了什么逻辑?

第二个查询给你不同的 ip。

第三个查询告诉您有 104 个 ip 出现了 2 或更多 次。

这里没有矛盾,你可能有很多ip返回了两次以上。第二个和第三个的结果不一定和第一个相加。

IP That Came Back This Month: 875-588=287;

有了这个,你假设每个 IP 只返回一次。如果只有一个 IP 返回 287 次怎么办? 最后一个查询告诉您确实只有 104 个 IP 返回(它们的总和 returns 将为您提供 287)。 所以我认为你的逻辑是错误的:)