插入值(generate_series) - 如何重用/循环数字,例如1,2,3,1,2,3

Roh*_*ada 8 postgresql generate-series

我使用generate_series在表中插入值.并且generate_series按其范围中的指定插入值.

例如:对于以下查询,

SELECT i AS id, i AS age, i AS house_number
INTO egg
FROM generate_Series(1,6) AS i;
Run Code Online (Sandbox Code Playgroud)

我们得到的结果是:

id  age  house_number
1   1    1
2   2    2
3   3    3
4   4    4
5   5    5
6   6    6
Run Code Online (Sandbox Code Playgroud)

但我的问题是,我想在列"年龄"中仅插入数字3,然后在3之后从0开始:

id  age  house_number
1   1    1
2   2    2
3   3    3
4   1    4
5   2    5
6   3    6
Run Code Online (Sandbox Code Playgroud)

这可能吗?是否有一些随机函数generate_series()执行相同的功能?

Mar*_*ers 11

您可以使用模运算从0循环到n - 1并添加一个:

SELECT i AS id, (i - 1) % 3 +1 AS age, i AS house_number
INTO egg
FROM generate_Series(1,6) AS i;
Run Code Online (Sandbox Code Playgroud)