我的表像,選擇此:MySQL的 - 只有當所有的組都爲空
ID|EID|priority|completed_forms|all_forms_in
1 |78 |NULL |y |y
2 |24 |NULL |y |y
3 |78 |1 |y |y
我想要完成的任務: 只選擇行,如果他們都有着相同的EID
和所有共享NULL的優先級,併爲completed_forms和all_forms_in標記爲'y'。
我已經試過:這是我目前的select語句:
SELECT * FROM tasks
WHERE priority IS NULL AND EID in
(
SELECT * FROM
(select EID from tasks
WHERE completed_form = 'y' AND all_forms_in = 'y') as priority_check
GROUP BY EID having count(*) = 2
)
預期結果: 我想這不返回行,因爲選擇應確保返回只有兩行是NULL。在這種情況下,ID 1和ID 3不能共享NULL。相反,它返回ID 1.
爲什麼不應該與ID = 2行返回? EID必須有2行或更多'priority = NULL'? –
在此示例中,它必須恰好爲2(GROUP BY EID的count(*)= 2)。由於EID = 24只有1個計數,因此不應退回。它應該看到的只有兩行是1和3.但它不應該選擇任何東西,除非它們都具有NULL優先級。 – osakagreg
你能提供SqlFiddle嗎? –