跳转到主内容
跳转到主内容

generate_series 表函数

别名:generateSeries

语法

返回一个仅包含单列 'generate_series' (类型为 UInt64) 的表,该列的取值为从 start 到 stop (含端点) 的整数:

generate_series(START, STOP)

返回一个仅包含名为 'generate_series' 单列 (UInt64) 的表,该列包含从 startstop (含端点) 的整数,数值之间的步长由 STEP 指定:

generate_series(START, STOP, STEP)

STEP 可以为负数,此时序列将按降序从 START 生成至 STOP。如果 STEP 为负数且 START < STOP,则结果为空。

示例

以下查询返回的表内容相同,但列名不同:

SELECT * FROM numbers(10, 5);
┌─number─┐
│     10 │
│     11 │
│     12 │
│     13 │
│     14 │
└────────┘
SELECT * FROM generate_series(10, 14);
┌─generate_series─┐
│              10 │
│              11 │
│              12 │
│              13 │
│              14 │
└─────────────────┘

以下查询将返回内容相同但列名不同的表 (不过第二种方式效率更高) :

SELECT * FROM numbers(10, 11) WHERE number % 3 == (10 % 3);
┌─number─┐
│     10 │
│     13 │
│     16 │
│     19 │
└────────┘
SELECT * FROM generate_series(10, 20, 3);
┌─generate_series─┐
│              10 │
│              13 │
│              16 │
│              19 │
└─────────────────┘

生成降序序列:

SELECT * FROM generate_series(9, 0, -1);
┌─generate_series─┐
│               9 │
│               8 │
│               7 │
│               6 │
│               5 │
│               4 │
│               3 │
│               2 │
│               1 │
│               0 │
└─────────────────┘