sql >> Databáze >  >> RDS >> Mysql

Počítejte výskyty na základě několika podmínek pro dvě tabulky

Pokud vás sleduji správně, můžete použít exists filtrovat podle 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'
)

To počítá řádky v první tabulce, pro které je alespoň jeden řádek ve druhé tabulce má Wisconsin. Pokud na druhou stranu chcete zajistit, aby všechny řádky ve druhé tabulce splňují podmínku, pak možnost je:

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. Je časové pásmo java.sql.Timestamp specifické?

  2. Jak používat příkaz IF/ELSE k aktualizaci nebo vytvoření nové položky uzlu xml v SQL

  3. Nelze nainstalovat balíček mysqlclient Python na Windows

  4. SQL:Najděte maximální záznam na skupinu