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

多表关联查询中如何过滤状态为disabled的员工记录?

解决方案

这里提供两种实现方式,都能满足过滤掉对应X表state为disabled的记录,且不返回X/Y表字段的需求:

方法一:左连接+空值过滤

通过左连接关联X表中状态为禁用的记录,再排除这些匹配到的结果:

SELECT A.id, B.type
FROM A
INNER JOIN B ON A.id = B.id
LEFT JOIN X ON A.id = X.id AND X.state = 'disabled'
WHERE X.id IS NULL

方法二:NOT EXISTS子查询

直接通过子查询判断当前记录是否对应X表中禁用的员工,只保留不存在该情况的记录:

SELECT A.id, B.type
FROM A
INNER JOIN B ON A.id = B.id
WHERE NOT EXISTS (
    SELECT 1
    FROM X
    WHERE X.id = A.id AND X.state = 'disabled'
)

两种方法都能达成目标,NOT EXISTS在多数数据库中性能表现更稳定,左连接的方式则更直观易读。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 18:02:01