Mysql
 sql >> база данни >  >> RDS >> Mysql

Пребройте събитията въз основа на няколко условия за две таблици

Ако ви следвам правилно, можете да използвате exists за филтриране на 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'
)

Това отчита редовете в първата таблица, за които поне един ред във втората таблица има Уисконсин. Ако, от друга страна, искате да сте сигурни, че всички редове във втората таблица удовлетворява условието, тогава една опция е:

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. MySQL Изберете дата, равна на днес

  2. Защо find_in_set работи, но клауза IN

  3. Защита на паролата за MySQL при разработка в Python?

  4. Грешка при инсталиране на mysqlclient за python на Ubuntu 18.04

  5. PDO PHP вмъкване в DB от асоциативен масив