3

好吧,我想我可能会以错误的方式解决这个问题,但我尝试了很多不同的想法,似乎找不到正确的方法来做到这一点,所以希望有人能够将我推向正确的方向。

基本上,我会在访问者访问我的网站时记录他们的 IP 地址,然后确定哪些 IP 地址属于企业。

所以表一有一个访问过我网站的人的 IP 地址的长列表,而表二有一个我已经确定的 IP 地址列表。

现在我要做的是找出表 1 中的 IP 地址有多少已被识别。

我下面的代码匹配和分组 IP 地址,并显示表 2 中的 IP 地址出现在表 1 中的次数。

但是我想要得到的只是一个数字而不是一组数字,我尝试过几种方式编写查询,但只能让它与一个组一起工作

SELECT ip_stats.ip, COUNT(ip_stats.ip) 
FROM ip_stats 
LEFT JOIN main USING (ip)
GROUP BY ip_stats.ip

ip_stats 是表一,有很长的访问我网站的人的名单。main 是表二,其中包含已识别的 IP 地址的详细信息。

两个表都有自己的主键,它们都是 id。

谢谢

4

1 回答 1

2

COUNTip桌上main的_

SELECT ip_stats.ip, COUNT(`main`.ip)
FROM ip_stats 
LEFT JOIN main USING (ip)
GROUP BY ip_stats.ip 

更新 1

啊,好吧,所以你只想要ip主表上存在的所有值的一个值,对吗?那么你不需要为此使用LEFT JOIN,而是使用INNER JOIN

SELECT COUNT(DISTINCT ip_stats.ip)
FROM ip_stats 
     INNER JOIN main USING (ip) 

DISTINCT已添加,因此仅计算唯一值。

于 2012-09-24T00:32:24.257 回答