从Postgresql视图获取下一条记录

时间:2014-10-04 13:37:21

标签: postgresql next

我根据自己的要求创建了一个视图 someView

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

当我在条件中传递ID时,我需要从视图中获取下一条记录 即。如果我通过4我应该回来8。此外,如果我传递最后一个ID,它应该返回第一个记录 即。如果我通过26,我应该回来3。

我一直试图使用滞后和领先,但没有任何结果。我还试过这个

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

在这种情况下,我确实得到了下一个值,但如果我传递了最后一个ID,它就不会得到我的结果。 那我该怎么办?还有其他办法可以解决我的问题吗?

提前致谢。

1 个答案:

答案 0 :(得分: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;

这可能效率不高,但应该有效。