gpt4 book ai didi

mysql - 无法过滤掉记录

转载 作者:行者123 更新时间:2023-11-28 23:13:55 25 4
gpt4 key购买 nike

我有两个表:

proxies_meta

  • id - 整数
  • ip_address = varchar
  • current_status = int
  • 更新时间

代理

  • 编号
  • IP地址
  • 点击
  • 状态
  • 更新时间

proxies_meta 就像所有 ip 地址所在的地方,而 proxies 获取条目或在使用来自 proxies_meta 的 ip 时更新。

现在,在特定的一天,我必须选择一个尚未被禁止的代理 IP,即 status = 0 并且 hits 每天不超过 10。到目前为止我试过了但没有用

select pm.ip_address as IP,sum(p.hits) as total_hits
from proxies_meta as pm
LEFT JOIN proxies as p
ON p.ip_address = pm.ip_address
AND pm.`current_status` = 0
AND date(p.updated_at) = '2017-06-23'
GROUP BY IP
having total_hits < 11 OR total_hits is NULL

只要状态为 0proxies 中没有记录,此查询就有效。如果 current_statusstatus0 更改为 -1 然后它仍然选择因为 LEFT JOIN

我如何确保我不会获得不需要的 IP 地址并且它还会检查每天的总点击量?

最佳答案

我认为你只需要将当前状态的条件移动到 where 子句中:

select pm.ip_address as IP, sum(p.hits) as total_hits
from proxies_meta pm left join
proxies p
on p.ip_address = pm.ip_address and
date(p.updated_at) = '2017-06-23'
where pm.current_status = 0
group by pm.ip_address
having total_hits < 11 or total_hits is null;

left join 保留第一个表中的所有行,无论 on 子句的计算结果是 true、false 还是 NULL。因此,第一个表中的条件不会过滤任何内容。对于实际过滤,第一个表的条件需要在 where 子句中。

关于mysql - 无法过滤掉记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44719233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com