Как в MySQL организовать запрос по нескольким вариантам для критерия?
Добрый вечер. Вопрос простой, но меня поставил в тупик
Есть таблица с тремя колонками:
1. ID - идентификатор записи
2. FK_ID - идентификатор для внешнего ключа
3. VALUE - значение записи
Есть набор внешних ключей (FK_ID), например: [2, 4, 5], для которых нужно получить самые актуальные значения - с наибольшим идентификатором. Например, для исходной таблицы со значениями:
Результат будет следующий:
id | fk_id | value
8 | 2 | 10
9 | 4 | 1
7 | 5 | 15
Можно ли это сделать в одном запросе, или придётся делить на несколько отдельных, по количеству ключей для поиска? Если можно, то как и будет ли этот вариант быстрее, чем отдельные запросы?
select t1.*
from tt as t1
inner join (
select max(id) as max_id
from tt
where fk_id in (2,4,5)
group by fk_id
) as t2 on t1.id = t2.max_id
order by fk_id;
Поскольку определять нужно по уникальному полю, то можно так:
select v.id, v.fk_id, v.value from `table` as v join (
select fk_id, max(id) as id from `table` where fk_id in (2,4,5) group by fk_id
) targetids using(id)