Bạn sẽ phải quét toàn bộ bảng, vì vậy đây có lẽ là giải pháp tốt nhất:
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;
Nếu danh sách của bạn nằm trong bảng có chỉ mục, thì bạn có thể sử dụng left join
trên đó. Tuy nhiên, MySQL tối ưu hóa các tìm kiếm cho in
với các giá trị không đổi (nó sử dụng tìm kiếm nhị phân). Vì vậy, đây có thể là phương pháp nhanh nhất.