我有两个PostgreSQL表:
table name column names
----------- ------------------------
login_log ip | etc.
ip_location ip | location | hostname | etc.
我想从login_log
中获取每个没有在ip_location
中有记录的IP地址。我尝试了这个查询,但它抛出了一个语法错误。
SELECT login_log.ip
FROM login_log
WHERE NOT EXIST (SELECT ip_location.ip
FROM ip_location
WHERE login_log.ip = ip_location.ip)
ERROR: syntax error at or near "SELECT"
LINE 3: WHERE NOT EXIST (SELECT ip_location.ip`
我也在想,如果对此查询进行调整使其正常工作,是否这个查询是实现此目的的最佳性能查询。
LEFT JOIN
时要小心 - 如果在查找表中有多个匹配行,则每个匹配行都会在主查询中创建一个重复条目,这可能不是所需的。 - Matthias FrippWHERE i.ip IS NULL
,否则永远不可能发生这种情况,这意味着完全没有匹配。 - Erwin Brandstetter