You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL左连接查询:如何仅获取无代理或代理有效的员工

解决方案

你可以通过在查询中添加WHERE条件来过滤掉那些关联了无效代理机构的员工,无需使用UNION,这里有两种简洁的写法:

写法一:基于左连接后过滤

select e.*, a.*
from employee e
left join agency a on a.id = e.agencyID and a.valid = true
where e.agencyID is null or a.id is not null;

逻辑说明:

  • 左连接时仅匹配valid = true的代理机构,此时:
    • 无代理的员工:e.agencyID为null,会被e.agencyID is null条件保留;
    • 关联有效代理的员工:a.id不为null,会被a.id is not null条件保留;
    • 关联无效代理的员工:e.agencyID不为null但a.id为null,会被条件排除。

写法二:先关联所有代理再过滤

select e.*, a.*
from employee e
left join agency a on a.id = e.agencyID
where e.agencyID is null or a.valid = true;

逻辑说明:

  • 先左连接所有关联的代理机构,再通过WHERE条件直接筛选:
    • 保留无代理的员工(e.agencyID is null);
    • 保留关联了valid = true的代理机构的员工;
    • 自动排除有代理但valid = false的员工。

这两种写法都比UNION更简洁高效,推荐根据实际数据量选择(写法二逻辑更直观,写法一在代理机构数据量大时可能性能更优)。

内容的提问来源于stack exchange,提问作者tmp dev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 03:01:09