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

如何调整SQL查询,让无员工的部门也纳入查询结果?

解决方案

你的原查询只筛选出了有员工且员工都不住马德里的部门,漏掉了无员工的部门。要同时包含这两类部门,核心是判断「部门中不存在居住在MADRID的员工」,可以用以下两种常见写法:

方法一:使用NOT EXISTS(推荐,性能更优)

通过子查询检查当前部门是否存在住在马德里的员工,若不存在则保留该部门(包括无员工的部门):

SELECT d.NUM_DPT, d.NOM_DPT
FROM departaments d
WHERE NOT EXISTS (
    SELECT 1
    FROM empleats e
    WHERE e.NUM_DPT = d.NUM_DPT
      AND e.ciutat_empl = 'MADRID'
)
ORDER BY d.NOM_DPT ASC;

方法二:分组统计过滤

通过左连接关联部门和员工,分组后统计部门内住在马德里的员工数量,数量为0的部门即为符合条件的:

SELECT d.NUM_DPT, d.NOM_DPT
FROM departaments d
LEFT JOIN empleats e ON d.NUM_DPT = e.NUM_DPT
GROUP BY d.NUM_DPT, d.NOM_DPT
HAVING COUNT(CASE WHEN e.ciutat_empl = 'MADRID' THEN 1 END) = 0
ORDER BY d.NOM_DPT ASC;

说明

  • 两种写法都能覆盖「无员工的部门」和「有员工但无马德里居民的部门」这两种场景
  • NOT EXISTS通常在数据库中会有更好的执行效率,因为一旦找到匹配的记录就会停止查询

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 20:10:44