Вы можете использовать exists
, чтобы вывести всех членов семей, в которых есть хотя бы один человек, чей возраст составляет от 64 до 80 лет:
select f.*
from families f
where exists (
select 1
from families f1
where f1.family_code = f.family_code and f1.age between 64 and 80
)
Для производительности вам нужен индекс на (family_code, age)
.
В MySQL 8.0 вы можете использовать оконные функции:
select *
from (
select f.*, max(age between 64 and 80) over(partition by family_code) to_keep
from families f
) t
where to_keep