如何使用嵌套子查询查询10号分行与30号分行同岗位的员工
SQL查询修正:筛选10号分行与30号分行岗位相同的员工
你当前编写的SQL存在两个核心问题:
- 内层子查询返回的是员工姓名字段
SNAME,和外层用于匹配的JOB字段数据类型完全不匹配,无法完成岗位对齐 - 没有添加分行筛选条件,既没有限定内层子查询取30号分行的岗位,也没有限定外层查询只返回10号分行的员工
修正后的SQL语句如下:
SELECT SNAME, JOB FROM STAFF WHERE -- 限定只查询10号分行的员工 BRANCH_NO = 10 -- 匹配30号分行存在的所有岗位 AND JOB IN ( SELECT DISTINCT JOB FROM STAFF WHERE BRANCH_NO = 30 );
逻辑说明:
- 内层嵌套子查询先用
DISTINCT去重查询30号分行所有存在的岗位,减少无效匹配提升查询效率 - 外层查询筛选10号分行的员工,仅保留岗位在内层子查询结果范围内的记录
- 如果你表中的分行字段不是
BRANCH_NO,替换为实际的分行字段名称即可
内容的提问来源于stack exchange,提问作者DogBike
相关产品推荐
相关产品推荐

