2014-10-04 182 views
1

獲取下一個記錄我已按我的要求從Postresql視圖

ID | name 
3 | A 
4 | F 
8 | G 
13 | E 
26 | Z 

當我通過在狀態,我需要從視圖 即獲得下一條記錄的ID創建的視圖someView。如果我通過4,我應該回來8。如果我傳遞最後一個ID,它應該返回第一條記錄 即。如果我通過26我應該回去3.

我一直在試圖利用滯後,導致但沒有什麼工作out.also我想這

DECLARE aaa SCROLL CURSOR FOR SELECT ID FROM someView where ID > someValue; 
fetch 1 from aaa 

在這種情況下,我得到的下一個值但如果我傳遞最後一個ID,它不會得到我的結果。 那麼我該怎麼做呢?有沒有其他辦法可以解決我的問題?

在此先感謝。

+0

這是一個真正奇怪的要求。 – Rahul 2014-10-04 13:56:32

+0

我需要分配任務。所以當我得到最後一個分配人員的ID時,任務會自動分配給下一個人員。所以在到達桌子上的最後一個人後,它應該返回到第一個人。現在是那個奇怪的? – Pradnya 2014-10-04 14:04:15

+0

好的。你的'ID'列值是在post中顯示的嗎?或者他們自動遞增?只是試圖確認ID列值是否遵循任何模式。 – Rahul 2014-10-04 14:10:02

回答

1

是這樣的:

with next_entry as (
    select * 
    from sometable 
    where id > 26 -- change the desired value here 
    order by id 
    limit 1 
) 
select * 
from next_entry 
union all 
select * 
from sometable 
where not exists (select 1 from next_entry) 
limit 1; 

它可能不是非常有效的,但應該工作。

+0

它解決了這個問題。感謝洛特:) – Pradnya 2014-10-04 14:30:19

+0

@a查詢無法正常工作。在隨機的情況下,它會給出錯誤的結果,像這樣http://sqlfiddle.com/#!15/32278/6 – Pradnya 2014-10-04 14:42:33

+0

@Pradnya:對不起,我忘了CTE內部的'order by' – 2014-10-04 14:45:55