DBでは検索結果がnullのみの場合、nullと値の場合、nullなし値のみの場合の3つのパターンがあります。
値が入っている場合は、minで取得したく、nullのみの場合はnullにしたいです。
その上で、ISNULL結果でnullかminかを分けてみました。
結果としては、nullと値・nullなし値については解決しました。
ただ、nullのみの場合が処理しきれずにおります。
ONの条件を"NULLのみ"ならしない、ができれば賄える想定なのですが、方法が分からずにおります。
こちら、ご教授願えないでしょうか。
DB
テーブル名:sample no val priority 1 AAA 1 1 BBB 2 1 CCC 3 2 AAA 1 2 BBB 2 2 CCC null 3 AAA null 3 BBB null 3 CCC null
期待結果
no val count 1 AAA 3 2 AAA 3 3 AAA 3
※no3については、取れた順で良いです。並び替えなどはありません。
※priorityで値があれば最小を取りたいです。
試したSQL
SELECT B.no as no, val, B.count FROM sample AS A INNER JOIN( SELECT no, count(*) as count, if(ISNULL(min(priority)),null,min(priority)) as min_priority FROM sample WHERE no = 1 or no = 2 or no = 3 GROUP BY no ) AS B ON (A.no = B.no AND A.priority = B.min_priority);
回答3件
あなたの回答
tips
プレビュー