Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Policz wystąpienia na podstawie kilku warunków dla dwóch tabel

Jeśli podążam za tobą poprawnie, możesz użyć exists filtrować według 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'
)

Liczy to wiersze w pierwszej tabeli, dla których co najmniej jeden wiersz w drugiej tabeli ma stan Wisconsin. Z drugiej strony, jeśli chcesz mieć pewność, że wszystkie wiersze w drugiej tabeli spełniają warunek, to opcja to:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Narzędzie do importowania plików CSV do bazy danych MySQL?

  2. Wyszukiwanie pełnotekstowe MySQL dla słów z trzema lub mniej literami

  3. „gdzie” i „lub_gdzie” kodu inicjującego

  4. JPA + Hibernate:Jak zdefiniować ograniczenie mające ON DELETE CASCADE

  5. Porównywanie dat w MySQL z pominięciem części czasu w polu DateTime