Nếu tôi theo dõi bạn một cách chính xác, bạn có thể sử dụng exists
để lọc trên table2
:
select count(*) as cnt
from table1 t1
where t1.sex = 1 and t1.age = 3 and exists (
select 1
from table2 t2
where t2.id = t1.id and t2.var1 = 'Wisconsin'
)
Điều này đếm các hàng trong bảng đầu tiên có ít nhất một hàng trong bảng thứ hai có Wisconsin. Mặt khác, nếu bạn muốn đảm bảo rằng tất cả các hàng trong bảng thứ hai thỏa mãn điều kiện, sau đó một tùy chọn là:
select count(*) as cnt
from table1 t1
inner join (
select id
from table2
group by id
having min(var1 <=> 'Wisconsin') = 1
) t2 on t2.id = t1.id
where t1.sex = 1 and t1.age = 3