первый пост здесь. Мне нужно извлечь самое последнее значение из таблицы, но на определенную дату в этой конкретной таблице есть множество записей. Я сделал аналогичные вещи для обоих вариантов ниже.
Вариант 1 .. Присоединение основной таблицы к таблице подзапроса:
select t1.key, t1.date, t2.value
from table1 t1
join
(select key,
date,
max(updated_at) as last_update
from table2
group by 1,2) t2
on t1.key = t2.key
and t1.date = t2.date
and t1.updated_at = t2.last_update
order by 1,2;
Вариант 2 .. Подзапрос в соединении и нисходящий «порядок по» с пределом:
select t1.key, t1.date, t2.value
from table1 t1
join table2 t2
on t1.key = t2.key
and t1.date = t2.date
and t2.updated_at = (
select updated_at
from table2
where key = t2.key
and date = t2.date
order by updated_at desc
limit 1)
order by 1,2;
Вариант 2 немного нетипичен и требует упорядочения всей таблицы в подзапросе, поэтому я сомневаюсь, что это лучший метод, но он работает и позволяет подзапросу жить внутри Join, поэтому я использовал это раньше.
Является ли Вариант 1, Вариант 2 или какой-либо Вариант 3 наиболее эффективным способом решения этой проблемы? Какая лучшая практика? Рад присоединиться после просмотра стека некоторое время, спасибо всем.