sql >> Databasteknik >  >> RDS >> Mysql

Räkna förekomster baserat på flera villkor för två tabeller

Om jag följer dig rätt kan du använda exists för att filtrera på 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'
)

Detta räknar rader i den första tabellen för vilka minst en raden i den andra tabellen har Wisconsin. Om du å andra sidan vill säkerställa att alla rader i den andra tabellen uppfyller villkoret, då är ett alternativ:

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. Dela upp datumintervallet i en rad per månad i sql-servern

  2. MySQL - Räknare inom grupp

  3. cron jobb för att ta bort gammal data från postgres på debian

  4. Importera .csv-fil till ett Oracle Forms-program