2017-10-04 23 views
1

如果我有一個像如何選擇只有NULL值的分組行?

task_id | state 
--------+------------ 
    1 | NULL 
--------+------------ 
    1 | RESOLVED 
--------+------------ 
    2 | NULL 
--------+------------ 
    2 | NULL 

表我怎樣才能通過TASK_ID哪個狀態是唯一NULL分組的行。在這種情況下,只有與TASK_ID 2.

+0

你想只是TASK_ID 2,或兩列TASK_ID = 2? – jarlh

+0

如果我通過task_id寫了一些行,你會怎樣? –

+0

我認爲摸索的thik – Strawberry

回答

2

做一個GROUP BY,使用HAVING返回TASK_ID只有空的狀態。

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

它的工作原理,但使用max()與NULL值是否正確? –

+1

@カamo:絕對...... – zarruq

1

這裏行是我的方法:

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

我認爲這不會只返回task_id = 2 –

+0

它適用於我! –

+0

有沒有辦法重寫它來加入而不是子選擇? –

2

試試這個 -

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

有沒有辦法重寫它來加入而不是子選擇? –

0

由於COUNT函數忽略NULL的情況下,一個特定的列分配,則可以使用group bycounthaving如下。

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

DEMO