好吧,我想我可能会以错误的方式解决这个问题,但我已经尝试了很多不同的想法,但似乎无法找到正确的方法来做到这一点,所以希望有人能够将我推向正确的方向。
基本上我会在访问者访问我的网站时记录他们的 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。
谢谢
最佳答案
COUNT
main
表上的 ip
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
,因此只计算唯一值。
关于php - 左连接计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12557450/