Если вы хотите выбрать из таблицы report_hosts
только один раз, вы можете использовать своего рода метод 'RANK OVER PARTITION' (доступен в Oracle, но, к сожалению, в MySQL нет). Примерно так должно работать:
select h.host,h.last_scan as most_recent_scan,h.report
from
(
select rh.*,
case when @curHost != rh.host then @rank := 1 else @rank := @rank+1 end as rank,
case when @curHost != rh.host then @curHost := rh.host end
from report_hosts rh
cross join (select @rank := null,@curHost = null) t
order by host asc,last_scan desc
) h
where h.rank = 1;
Конечно, он все еще является вложенным, но избегает проблемы двойного выбора. Не уверен, будет ли он более эффективным или нет - все зависит от того, какие у вас индексы и объем данных.