sql >> Database teknologi >  >> RDS >> Mysql

Tæl forekomster baseret på flere betingelser for to borde

Hvis jeg følger dig rigtigt, kan du bruge exists for at filtrere 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'
)

Dette tæller rækker i den første tabel, for hvilke mindst én række i den anden tabel har Wisconsin. Hvis du derimod vil sikre dig, at alle rækker i den anden tabel opfylde betingelsen, så er en mulighed:

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. Kontroller, om rækken findes i databasen, før du indsætter

  2. Ingen pakke msyql-server tilgængelig

  3. Hvordan kan jeg inkludere null-værdier i en MIN eller MAX?

  4. For at ignorere dublerede nøgler under 'copy from' i postgresql