sql >> Base de Datos >  >> RDS >> Mysql

Cuente las ocurrencias basadas en varias condiciones para dos tablas

Si te sigo correctamente, puedes usar exists para filtrar en 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'
)

Esto cuenta filas en la primera tabla para las cuales al menos una fila en la segunda tabla tiene Wisconsin. Si, por el contrario, quiere asegurarse de que todas las filas en la segunda tabla satisface la condición, entonces una opción es:

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