Вы можете использовать подзапрос здесь:
select
a.id
from
articles a
where
a.version = (select max(version) from articles)
Поскольку это не коррелированный подзапрос, он будет довольно быстрым (таким же быстрым или быстрым, как объединение), поэтому вам не нужно об этом беспокоиться. Но он вернет все значения, которые имеют максимум articleid
.
Конечно, я бы порекомендовал создать индекс для articleid
(при условии, что id
уже кластеризован). Это поможет ему вернуться еще быстрее.
Как отмечено в комментариях, если вы хотите получить максимальную версию для каждого articleid
, вы можете сделать следующее:
select
a.id
from
articles a
inner join (select articleid, max(version)
from articles group by articleid) as b on
a.articleid = b.articleid
and a.version = b.version
Это создаст соединение из этого подзапроса и обычно будет намного быстрее, чем коррелированный подзапрос, который выбирает максимальное значение для каждого articleid
.