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

SQL查询:如何找出不存在status=3记录的用户?

原表结构与数据

user_idstatus
13
15
23
21
35

需求说明

找出不存在status=3记录的用户

解决方案

方法1:NOT EXISTS子查询

这是最直观的写法,直接检查每个用户是否没有status=3的关联记录:

SELECT DISTINCT user_id
FROM your_table t1
WHERE NOT EXISTS (
    SELECT 1
    FROM your_table t2
    WHERE t2.user_id = t1.user_id
      AND t2.status = 3
);

用DISTINCT确保同一用户只返回一次,避免因多条记录重复输出。

方法2:LEFT JOIN + IS NULL

通过左连接匹配status=3的记录,筛选出匹配失败的用户:

SELECT DISTINCT t1.user_id
FROM your_table t1
LEFT JOIN your_table t2
  ON t1.user_id = t2.user_id
  AND t2.status = 3
WHERE t2.user_id IS NULL;

方法3:GROUP BY + HAVING

按用户分组后,统计status=3的记录数,筛选计数为0的用户:

SELECT user_id
FROM your_table
GROUP BY user_id
HAVING SUM(CASE WHEN status = 3 THEN 1 ELSE 0 END) = 0;

也可以用更简洁的写法(多数主流数据库支持):

SELECT user_id
FROM your_table
GROUP BY user_id
HAVING COUNT(CASE WHEN status = 3 THEN 1 END) = 0;

COUNT会忽略NULL值,当status≠3时CASE返回NULL,不会被计入统计,计数为0即代表该用户无status=3的记录。

内容的提问来源于stack exchange,提问作者CHI QUEI LIN

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 00:27:20