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

编写SQL查询筛选非管理员且ID不在approver表subordinate_id中的用户

修正SQL查询:获取符合条件的普通用户

数据表结构

user表

idfull_nameis_admin
1jane0
2Helio0
3fran0
4mila0
5admin1

approver表

idsubordinate_idapprover_id
112
234

问题分析

你原SQL的问题在于把U.is_admin = 0放在了NOT EXISTS的子查询条件里。对于管理员用户(is_admin=1),子查询的A.subordinate_id = U.id AND U.is_admin = 0永远不成立,NOT EXISTS会返回true,导致管理员被错误包含到结果中。

修正后的SQL语句

写法一(使用NOT EXISTS)

SELECT 
    full_name
FROM user AS U 
WHERE U.is_admin = 0 
  AND NOT EXISTS(
    SELECT * FROM approver AS A 
    WHERE A.subordinate_id = U.id
);

写法二(使用NOT IN)

SELECT full_name
FROM user
WHERE is_admin = 0
  AND id NOT IN (SELECT subordinate_id FROM approver);

说明

将is_admin = 0移到主查询的WHERE条件中,先过滤掉所有管理员,再筛选出ID不在approver表subordinate_id列中的普通用户,最终结果会是Helio和mila,符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 11:35:40