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

SQL多对多关系场景下使用JOIN查询无归属项目员工的实现问题

使用JOIN实现的查询语句

SELECT e.*
FROM Employee e
LEFT JOIN ProjectEmployee pe 
  ON e.ID = pe.EMPLOYEE_ID
WHERE pe.ID IS NULL;

实现逻辑说明

  • 采用LEFT JOIN左连接查询,左表为Employee员工表,右表为ProjectEmployee项目员工关联表,关联条件为员工ID与关联表中存储的员工ID字段匹配
  • 左连接特性会完整保留左表的所有记录,即使右表没有匹配的关联数据,此时右表对应的字段值会为NULL
  • 最终通过WHERE pe.ID IS NULL筛选条件,仅保留在关联表中没有匹配记录的员工,也就是没有分配任何项目的员工

补充说明

你当前使用的子查询存在逻辑错误:子查询中选取的是project_employee.id,这个是关联表自身的主键ID,不是员工ID,正确的子查询写法应该是:

select * from employee 
where id not in (select EMPLOYEE_ID from ProjectEmployee);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 22:39:00