私の表は、このようなものです選択:のMySQL - グループ内のすべてがNULLである場合にのみ
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は 'priority = NULL'で2行以上必要ですか? –
この例では、正確に2(count(*)= 2を持つGROUP BY EID)でなければなりません。 EID = 24のカウントは1つだけなので、返されません。見るべき唯一の2行は1と3です。しかし、両方が優先順位のためにNULLを持っていない限り、何も選択すべきではありません。 – osakagreg
あなたはSqlFiddleを提供できますか? –