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

求助编写无聚合函数的嵌套SQL查询以找出教授过所有科目的教员

符合要求的SQL实现方案

使用双重NOT EXISTS嵌套查询实现,完全不涉及任何聚合函数,逻辑为不存在任何一门课程,是当前教员没有教过的,刚好匹配你要的「教授过所有科目」的需求:

SELECT DISTINCT f.*
FROM Faculty f
WHERE NOT EXISTS (
    -- 筛选出当前教员没有授课记录的所有课程
    SELECT c.cid
    FROM Course c
    WHERE NOT EXISTS (
        -- 校验当前教员是否教过对应课程
        SELECT 1
        FROM Teaches t
        WHERE t.fid = f.fid
          AND t.cid = c.cid
    )
);

逻辑说明

  • 外层遍历Faculty表的每一位教员
  • 第一层嵌套子查询遍历Course表的所有课程,筛选出该教员没有对应授课记录的课程
  • 当第一层子查询没有返回任何结果时(即NOT EXISTS判断为真),说明该教员不存在未教过的课程,符合筛选条件
  • 语句里的DISTINCT用于避免重复输出同一位教员的信息,如果你需要关联输出对应的授课、课程明细,可以去掉DISTINCT后自行关联Teaches、Course表即可。

和原有方案的对比

你之前用count(*)=4的方案依赖课程总数固定为4的硬编码,本方案无需绑定课程总数,后续课程数量变化也不需要调整SQL,通用性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 01:36:04