左连接计数

时间:2012-09-24 00:27:56

标签: php mysql left-join

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

基本上我会在访问我的网站时记录访问者的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是表2,包含已识别的IP地址的详细信息。

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

由于

1 个答案:

答案 0 :(得分:2)

COUNT ip表{/ 1}}

main

更新1

好的,所以你只想要主表上存在的所有SELECT ip_stats.ip, COUNT(`main`.ip) FROM ip_stats LEFT JOIN main USING (ip) GROUP BY ip_stats.ip 的一个值吗?那么您不需要使用ip,而是使用LEFT JOIN

INNER JOIN
添加了

SELECT COUNT(DISTINCT ip_stats.ip) FROM ip_stats INNER JOIN main USING (ip) ,因此只计算了唯一值。