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

求助:如何用MySQL查询无当前项目的人员数据

解决MySQL中查询无当前项目人员的问题

核心思路

由于MySQL不支持MINUS语法,我们可以用**NOT EXISTS子查询**实现“所有人员减去有当前项目的人员”的需求,这是MySQL中替代差集操作的常用方案。

定义“当前项目”的判定规则

根据你提供的原有逻辑,当前项目需满足:

  • 分配类型为hard
  • 开始日期since_date不晚于当前时间加2周(或开始日期为空)
  • 结束日期until_date晚于当前时间加2周(或结束日期为空)

最终SQL语句

SELECT 
    e.id, 
    e.pronoun, 
    e.first_name, 
    e.last_name, 
    e.cost_center_id, 
    e.roles_id, 
    e.e_mail, 
    e.phone, 
    e.office_id, 
    e.work_percentage
FROM Employees e 
WHERE NOT EXISTS (
    SELECT 1
    FROM Employee_Assignments ea
    WHERE ea.employee_id = e.id
      AND ea.booking_type = 'hard'
      AND (ea.since_date <= DATE_ADD(NOW(), INTERVAL 2 WEEK) OR ea.since_date IS NULL)
      AND (ea.until_date > DATE_ADD(NOW(), INTERVAL 2 WEEK) OR ea.until_date IS NULL)
)

逻辑说明

  1. 主查询遍历所有员工记录
  2. NOT EXISTS子查询会检查当前员工是否存在符合“当前项目”条件的分配记录
  3. 若子查询无结果返回(即该员工没有任何当前项目),则该员工会被纳入最终结果
  4. 该方案会自动包含从未参与过任何项目的员工,同时排除有当前项目的员工,无论他们是否有历史项目记录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 04:50:18