全表スキャンを実行する必要があるため、これがおそらく最善の解決策です:
select (case when id in (< your list >) then 'in' else 'out' end) as inlist,
my_boolean_field, count(*)
from mytable t
group by (case when id in (< your list >) then 'in' else out' end),
my_boolean_field;
リストがインデックス付きのテーブルにある場合は、left join
を使用できます その上に。ただし、MySQLはin
の検索を最適化します 定数値を使用します(バイナリ検索を使用します)。したがって、これが最速の方法である可能性があります。