好吧,我想我可能走错了路,但我尝试了这么多不同的想法,似乎找不到正确的方法,所以希望有人能推动我朝着正确的方向前进。
基本上,我会在访问者访问我的网站时记录他们的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.ipip_stats是第一张表,有一长串人访问我的网站。main是表二,其中包含已标识的IP地址的详细信息。
这两个表都有自己的主键,都是id。
谢谢
发布于 2012-09-24 08:32:24
COUNT ip on 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,因此只计算唯一值。
https://stackoverflow.com/questions/12557450
复制相似问题