按顺序在Postgres中按级别连接

时间:2018-01-25 11:47:34

标签: oracle postgresql

我需要将查询从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中需要同样的东西。如果有人有任何想法,请分享一些解决方案。

提前致谢 戈库尔。

1 个答案:

答案 0 :(得分:2)

该查询的直接翻译是使用generate_series()nextval()

select nextval('id_seq')
from generate_series(1,3);

这将使序列前进三次。

但是,如果目标是为现有序列设置特定值(在Oracle中需要这样的黑客攻击),只需使用setval()

select setval('id_seq', 3);