Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Zählen Sie Vorkommen basierend auf mehreren Bedingungen für zwei Tabellen

Wenn ich dir richtig folge, kannst du exists verwenden um nach table2 zu filtern :

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'
)

Dies zählt Zeilen in der ersten Tabelle, für die mindestens eine Reihe in der zweiten Tabelle hat Wisconsin. Wenn Sie hingegen sicherstellen möchten, dass alle Zeilen in der zweiten Tabelle die Bedingung erfüllen, dann ist eine Option:

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