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

如何编写SQL查询获取未收到messageId=1471消息的employeeId

查询未收到messageId=1471消息的employeeId的SQL方案

核心逻辑是筛选出main_employee表中,不存在于messageReceiver表messageId=1471对应关联的employeeId列表中的员工ID,共有三种常用实现方式:

方案1:LEFT JOIN过滤法(兼容性最高,推荐)

不会受字段NULL值影响,逻辑直观:

SELECT e.employeeId
FROM main_employee e
LEFT JOIN messageReceiver r 
  ON e.employeeId = r.employeeId 
  AND r.messageId = 1471
WHERE r.employeeId IS NULL;

方案2:NOT EXISTS写法(关联表有索引时性能优异)

子查询关联匹配,执行效率高:

SELECT e.employeeId
FROM main_employee e
WHERE NOT EXISTS (
  SELECT 1 
  FROM messageReceiver r 
  WHERE r.messageId = 1471 
    AND r.employeeId = e.employeeId
);

方案3:NOT IN写法(仅适用于messageReceiver.employeeId非空的场景)

如果messageReceiver表的employeeId字段存在NULL值,该写法会返回空结果,使用前需要确认字段约束:

SELECT employeeId
FROM main_employee
WHERE employeeId NOT IN (
  SELECT employeeId 
  FROM messageReceiver 
  WHERE messageId = 1471
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 18:27:01