如何选择只有NULL值的分组行?

时间:2017-10-04 08:43:45

标签: mysql sql group-by

如果我有一张像

这样的表格
task_id | state
--------+------------ 
   1    |  NULL
--------+------------
   1    |  RESOLVED
--------+------------
   2    |  NULL
--------+------------
   2    |  NULL

如何通过task_id获取分组行,哪个状态仅为NULL。在这种情况下,只有task_id为2的行。

4 个答案:

答案 0 :(得分:3)

执行GROUP BY,使用HAVING返回仅具有空状态的task_id。

select task_id
from tablename
group by task_id
having max(state) is null

答案 1 :(得分:2)

试试这个 -

SELECT task_id
FROM YOUR_TABLE
WHERE state NOT IN (SELECT task_id
                    FROM YOUR_TABLE
                    WHERE task_id IS NOT NULL)

答案 2 :(得分:1)

这是我的方法:

    Select  * from yourTable where state is null and task_id not in 
    (select task_id from yourTable y where state is not null )

答案 3 :(得分:0)

如果指定了特定列,COUNT函数会忽略NULL,您可以使用group bycounthaving,如下所示。

SELECT task_id
FROM t1
GROUP BY task_id
HAVING count(STATE) = 0;

<强> DEMO