我需要将查询从Oracle转换为Postgres,它在Oracle中的序列上使用connect by level
。
我知道Postgres中没有connect by level
。我使用递归cte找不到替代品。
在Oracle中,如果我运行此查询。
create sequence ID_SEQ;
select ID_SEQ.nextval from DUAL connect by level <= 3;
我将得到以下结果
1
2
3
我在Postgres中需要同样的东西。如果有人有任何想法,请分享一些解决方案。
提前致谢 戈库尔。
答案 0 :(得分:2)
该查询的直接翻译是使用generate_series()
和nextval()
select nextval('id_seq')
from generate_series(1,3);
这将使序列前进三次。
但是,如果目标是为现有序列设置特定值(在Oracle中需要这样的黑客攻击),只需使用setval()
:
select setval('id_seq', 3);