Ще трябва да направите пълно сканиране на таблицата, така че това е може би най-доброто решение:
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
с постоянни стойности (използва двоично търсене). Така че това вероятно ще бъде най-бързият метод.