php - 左连接计数

标签 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 是表二,包含已识别的 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/

相关文章:

javascript - 添加 url 作为使用 Tesseract OCR 查询的参数

Mysql - 搜索多个表

php - 在安装 PHP 时设置 MySQL 配置数据

php - 无法使用 ssl 与 PDO 连接,但 mysqli 与 ssl 可以工作

php - 为什么我必须使用 set_charset ("utf8") 即使一切都是 utf-8 编码的? (MySQLi-PHP)

php - 命令不同步;当我循环运行时,你现在不能运行这个命令

mysql - mysql 中列类型自动递增

php - 存储过程在下一个查询中导致 "Commands out of sync"

sql - 如果 PostgreSQL 中不存在数据,则获取值为零

MySQL 'group by' 与 'left join' 丢弃一些条目