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

如何使用SQL子查询查找不存在指定account_id关联的user_id

可实现的SQL写法有以下几种,都能得到你要的结果:

方法1:NOT IN 子查询(逻辑最贴合需求描述,好理解)

先查出所有和指定account_id绑定的user_id,再过滤不在这个集合内的用户ID,加DISTINCT避免返回重复的用户ID:

SELECT DISTINCT user_id
FROM Accounts_Users
WHERE user_id NOT IN (
    -- 子查询拿到所有和指定account_id关联的user_id
    SELECT user_id FROM Accounts_Users WHERE account_id = 2
);

方法2:NOT EXISTS 关联子查询(生产环境更推荐,性能更优,也能避免NOT IN遇空值返回异常的坑)

SELECT DISTINCT t1.user_id
FROM Accounts_Users t1
WHERE NOT EXISTS (
    SELECT 1 
    FROM Accounts_Users t2 
    WHERE t2.account_id = 2 
      AND t2.user_id = t1.user_id
);

方法3:LEFT JOIN + 空值过滤

SELECT DISTINCT t1.user_id
FROM Accounts_Users t1
LEFT JOIN Accounts_Users t2
  ON t2.user_id = t1.user_id 
  AND t2.account_id = 2
WHERE t2.user_id IS NULL;

你可以根据自己的业务场景和数据量选择合适的写法,三种写法在你的示例数据下返回的结果都和预期一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:36:02