В Oracle я могу выбрать первое сообщение в отсортированной таблице с помощью
select messageid from(
select
messageid,
RANK() over (order by messageid asc) as msg_rank
from messages
) where msg_rank=1;
И, как я обнаружил в предыдущем вопросе , я могу выбрать строку исключительно с помощью
select * from messages where rownum < 2 for update skip locked;
Однако Я не могу объединить эти две концепции вместе
select messageid from(
select
messageid,
RANK() over (order by messageid asc) as msg_rank
from messages
) where msg_rank=1 for update skip locked;
-- results in error
-- ORA-02014: cannot select FOR UPDATE from view with DISTINCT, GROUP BY, etc.
Как выбрать верхнюю N с блокировкой readpast?