postgresql 从Postresql视图获取下一条记录

vfwfrxfs  于 2023-06-05  发布在  PostgreSQL
关注(0)|答案(1)|浏览(119)

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

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

当我在where条件下传递ID时,我需要从视图ie中获取下一条记录。如果我通过4,我应该得到8。此外,如果我通过最后一个ID,它应该返回第一个记录,即。如果我通过26,我应该回到3。
我一直试图使用滞后和铅,但没有任何工作。我也尝试了这个

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

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

mbjcgjjk

mbjcgjjk1#

比如这样:

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;

这可能不是很有效,但应该工作。

相关问题