私があなたを正しくフォローしていれば、exists
を使用できます 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'
)
これは、少なくとも1つある最初のテーブルの行をカウントします。 2番目のテーブルの行にはウィスコンシンがあります。一方、すべての行を確認したい場合は、 2番目の表で条件を満たす場合、オプションは次のとおりです。
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