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

查询无员工的Branch分支:现有SQL语句有误,求正确实现方法

查询无员工的分支(Branch)解决方案

原SQL语句的问题

  • 使用内连接(JOIN):内连接仅返回两张表中匹配的记录,也就是存在员工的分支,因此无法获取无员工的分支。
  • WHERE branchNo < 1 条件逻辑错误:分支编号通常为正整数,该条件会过滤掉所有有效分支,导致结果为空。

正确的SQL写法

方法1:左连接(LEFT JOIN)+ IS NULL

左连接会保留Branch表的所有记录,当Staff表中无匹配的分支编号时,对应员工表的字段会为NULL,以此筛选目标数据:

SELECT a.branchNo, a.city
FROM Branch a
LEFT JOIN Staff b ON a.branchNo = b.branchNo
WHERE b.branchNo IS NULL;

方法2:NOT EXISTS子查询

通过子查询检查当前分支是否不存在对应的员工记录,不存在则返回该分支:

SELECT branchNo, city
FROM Branch a
WHERE NOT EXISTS (
    SELECT 1
    FROM Staff b
    WHERE b.branchNo = a.branchNo
);

方法3:NOT IN子查询

先提取所有有员工的分支编号,再筛选出不在该列表中的分支(注意排除NULL值避免逻辑失效):

SELECT branchNo, city
FROM Branch
WHERE branchNo NOT IN (
    SELECT DISTINCT branchNo
    FROM Staff
    WHERE branchNo IS NOT NULL
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 07:42:09