You need to enable JavaScript to run this app. 如何查询三表关联下未出现在关联表的员工ID与培训ID组合
优惠活动
大模型
产品
解决方案
定价
更多

如何查询三表关联下未出现在关联表的员工ID与培训ID组合

需求实现方案

核心逻辑

你需要先拿到所有员工和所有培训的全量组合,再过滤掉已经存在于完成记录表中的配对,剩下的就是你要的未完成培训的员工+培训组合。你之前写法的问题在于始终以CompletedTrainings作为主查询表,该表本身只存储已完成的记录,自然查不到不存在的配对。

实现代码

写法1:CROSS JOIN + LEFT JOIN

SELECT e.EmpID, t.TrainingID
FROM 员工表 e
CROSS JOIN Trainings t
LEFT JOIN CompletedTrainings ct 
  ON e.EmpID = ct.EmpID 
  AND t.TrainingID = ct.TrainingID
WHERE ct.EmpID IS NULL

写法2:CROSS JOIN + NOT EXISTS

SELECT e.EmpID, t.TrainingID
FROM 员工表 e
CROSS JOIN Trainings t
WHERE NOT EXISTS (
  SELECT 1 
  FROM CompletedTrainings ct 
  WHERE ct.EmpID = e.EmpID 
  AND ct.TrainingID = t.TrainingID
)

验证说明

用你提供的示例数据执行上述语句,会正确返回预期结果:

EmpIDTrainingID
11
12

内容的提问来源于stack exchange,提问作者Christopher J. Joubert

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 04:06:07