如何在列中查询不可用的值?

时间:2016-06-14 15:16:05

标签: mysql sql resultset

我的表格如下:

enter image description here

由此,我试图获取user_id的状态不是 STATUS 4 AVAILABLE 。换句话说,我期待的结果是:

  

用户ID:17,19和20。

我尝试了很多查询,但没有什么对我不起作用。例如我试过。

SELECT user_id WHERE status NOT IN (4)

上面的查询仍然返回如下:

  

用户ID:1,17,18,19和20.

我知道它返回的原因,但我不知道如何克服这个问题。

任何帮助将不胜感激。

2 个答案:

答案 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)