Trong Oracle, tôi có thể chọn 1 tin nhắn hàng đầu trong một bảng được sắp xếp vớiChọn N hàng đầu với "để cập nhật bỏ qua khóa" trong Oracle
select messageid from(
select
messageid,
RANK() over (order by messageid asc) as msg_rank
from messages
) where msg_rank=1;
Và như tôi phát hiện ra trong một previous question tôi có thể chọn một hàng độc quyền với
select * from messages where rownum < 2 for update skip locked;
Tuy nhiên tôi không thể hợp nhất hai khái niệm này với nhau
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.
Làm thế nào tôi có thể chọn thứ e top N với khóa readpast?
Tôi nghĩ rằng bài viết trên blog này có một vài suy nghĩ liên quan: http://markjbobak.wordpress.com/2010/04/06/unintended-consequences/ –