sql >> Database >  >> RDS >> Mysql

Voorvallen tellen op basis van verschillende voorwaarden voor twee tabellen

Als ik je goed volg, kun je exists . gebruiken om te filteren op 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'
)

Dit telt rijen in de eerste tabel waarvoor ten minste één rij in de tweede tafel heeft Wisconsin. Als u er daarentegen voor wilt zorgen dat alle rijen in de tweede tabel voldoet aan de voorwaarde, dan is een optie:

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


  1. Mysql-tabel bijwerken met selectiequery uit een andere database

  2. MySql:BESTELLEN DOOR ouder en kind

  3. Het minimaliseren van de impact van het verbreden van een IDENTITEIT-kolom - deel 2

  4. Hoe doe je een update + join in PostgreSQL?