我使用generate_series在表中插入值。并且generate_series插入其范围中指定的值。
例如: 对于以下查询,
SELECT i AS id, i AS age, i AS house_number
INTO egg
FROM generate_Series(1,6) AS i;
我们得到的结果是:
id age house_number
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
6 6 6
但我的问题是,我想在列“年龄”中仅插入第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
这可能吗? generate_series()
中是否有一些执行相同功能的随机函数?
答案 0 :(得分:11)
您可以使用modulo operation从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;
答案 1 :(得分:4)
你可以使用一个专门设计的序列:
create table test (id serial);
alter sequence test_id_seq cycle minvalue 0 maxvalue 3 start 0 restart;
insert into test values(DEFAULT);
insert into test values(DEFAULT);
insert into test values(DEFAULT);
insert into test values(DEFAULT);
insert into test values(DEFAULT);
insert into test values(DEFAULT);
insert into test values(DEFAULT);
insert into test values(DEFAULT);
select * from test;
id
----
0
1
2
3
0
1
2
3
(8 rows)