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

SQL技术咨询:如何查询不属于X部门的唯一员工?

查询无任何X部门记录的唯一员工列表

需求明确:需要找出从未隶属于X部门的员工,员工的部门值可以是null、Y或Z,最终返回唯一的员工ID列表。

表结构与测试数据

创建表的SQL:

create table employe
(
    empID varchar(10),
    department varchar(10)
);

插入测试数据:

insert into employe values('A101'),('A101','X'),('A101','Y'),('A102','Z'),('A102','X'),
         ('A103','Z'),('A103','Y'),('A104','X'),('A104','Y'),('A105','Z'),('A106','X');

解决方案

方法1:使用NOT EXISTS(逻辑直观,推荐)

SELECT DISTINCT empID
FROM employe e
WHERE NOT EXISTS (
    SELECT 1
    FROM employe
    WHERE empID = e.empID AND department = 'X'
);

逻辑说明:对每个员工,检查是否存在其属于X部门的记录。如果不存在,则保留该员工ID,DISTINCT确保每个ID只返回一次。

方法2:使用GROUP BY + HAVING

SELECT empID
FROM employe
GROUP BY empID
HAVING SUM(CASE WHEN department = 'X' THEN 1 ELSE 0 END) = 0;

逻辑说明:按员工ID分组,统计每个员工属于X部门的记录数量。如果统计结果为0,说明该员工没有任何X部门的记录,符合需求。

预期结果

empID
------
A103
A105

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 00:05:20