假设我有这两个关系:
警报
:
id http_code_result domain_id ip_src
1 404 1 1.1.1.1
2 404 1 1.1.1.1
3 200 1 1.1.1.1
域
:
id name
1 google
我只想获取具有 404 响应的域。因此,对于 IP 地址 1.1.1.1,它将返回 0 行,因为 ID 为 1 的域也有一个 HTTP 200 响应。
最佳答案
我对您的问题的理解是:“您想要检索具有 HTTP 响应 404 的域。如果同一域具有 404(比如 200)以外的响应,则不应显示该域名。”
基于这样的理解,我们可以这样写查询::
SELECT d.id, d.name
FROM domain d, alert a
WHERE a.domain_id=d.id AND a.domain_id NOT IN(SELECT domain_id
FROM alert
WHERE http_code_result!=404);
请引用这个 SQLFiddle 链接以更好地理解
关于如果所有值都等于某个值,则 SQL 查询仅获取行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24263378/