我的表格如下:
由此,我试图获取user_id的状态不是 STATUS 4 AVAILABLE 。换句话说,我期待的结果是:
用户ID:17,19和20。
我尝试了很多查询,但没有什么对我不起作用。例如我试过。
SELECT user_id WHERE status NOT IN (4)
上面的查询仍然返回如下:
用户ID:1,17,18,19和20.
我知道它返回的原因,但我不知道如何克服这个问题。
任何帮助将不胜感激。
答案 0 :(得分:4)
您需要为此执行子查询。例如:
Select user_id from table Where user_id not in
(select user_id from table where status = 4 and user_id is not null);
这允许您排除状态为4的所有user_id。
答案 1 :(得分:1)
试试这个:
SELECT user_id
FROM mytable
GROUP BY user_id
HAVING COUNT(CASE WHEN status = 4 THEN 1 END) = 0
或者,或者:
SELECT user_id
FROM mytable AS t1
WHERE NOT EXISTS (SELECT 1
FROM mytable AS t2
WHERE t1.user_id = t2.user_id AND status = 4)