You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Vertica中实现Oracle的connect by level生成连续数值?

在Vertica中生成1到20的连续数值列

Vertica不支持Oracle的CONNECT BY语法,不过有几种简洁的方式可以实现生成连续数值序列的需求,推荐两种常用方案:

方法一:使用GENERATE_SERIES函数(推荐)

这是Vertica专门用于生成序列的内置函数,语法简单直接,完全匹配你的需求:

SELECT generate_series(1, 20) AS num;

参数说明:第一个值是序列起始数,第二个是结束数,步长默认是1,无需额外指定。如果需要调整步长(比如步长为2),只需添加第三个参数:generate_series(1,20,2)。

方法二:递归CTE(适用于较旧Vertica版本)

如果你的Vertica版本不支持GENERATE_SERIES(比如早于9.x版本),可以用递归公共表表达式实现:

WITH recursive series AS (
    SELECT 1 AS num
    UNION ALL
    SELECT num + 1 FROM series WHERE num < 20
)
SELECT num FROM series;

这个逻辑从1开始,每次自增1,直到数值达到20为止。

对比你原有的Oracle语句:

Oracle写法:

select rownum from dual connect by level <22

Vertica的GENERATE_SERIES完全可以替代上述逻辑,且代码可读性更强。

内容的提问来源于stack exchange,提问作者wojteka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 12:50:29