gpt4 book ai didi

sql - 如何在 postgresql 中更新表

转载 作者:行者123 更新时间:2023-11-29 14:37:47 26 4
gpt4 key购买 nike

我有一个格式如下的表格:

time                  year   month   day   hour   area   state1    state3 
2015-04-01 00:00:00 2015 4 1 0 1 100 300
2015-04-01 00:00:00 2015 4 1 0 2 300 300
2015-04-01 00:00:00 2015 4 1 0 3 500 600
2015-04-01 01:00:00 2015 4 1 0 1 600 900
2015-04-01 01:00:00 2015 4 1 0 2 100 300
2015-04-01 01:00:00 2015 4 1 0 3 100 600
2015-04-01 02:00:00 2015 4 1 0 2 900 300
2015-04-01 02:00:00 2015 4 1 0 3 300 900
2015-04-01 02:00:00 2015 4 1 0 1 100 300
.......................
...........
........
2015-04-30 23:00:00 2015 4 30 23 3 100 300

问题是在 2015-04-10 00:00:00 之后我的所有记录在 state1 和 state3 中都是 0。所以我想用 150 到 300 之间的随机数更新它们。

我有一个返回随机数的函数。

SELECT random_between(1,100)
FROM generate_series(1,5);

如何使用我的函数在 2015-04-10 00:00:00 之后更新 state1 和 state3。感谢任何帮助。

最佳答案

以以下 session 为例。这是您尝试做的一个非常简单的示例,也许它可以适应您的情况。我使用了直接转换和函数:

> createdb test
> psql -d test
psql (9.4.9)
Type "help" for help.

test=# create table mytest(id integer, cola integer,colb integer);
CREATE TABLE
test=# select * from mytest;
id | cola | colb
----+------+------
(0 rows)

test=# insert into mytest values(1,0,0);
INSERT 0 1
test=# insert into mytest values(2,0,0);
INSERT 0 1
test=# insert into mytest values(3,0,0);
INSERT 0 1
test=# insert into mytest values(4,0,0);
INSERT 0 1
test=# select * from mytest;
id | cola | colb
----+------+------
1 | 0 | 0
2 | 0 | 0
3 | 0 | 0
4 | 0 | 0
(4 rows)

test=# update mytest set cola = cast(((random()*150)+150) as Integer) where id >2;
UPDATE 2
test=# select * from mytest;
id | cola | colb
----+------+------
1 | 0 | 0
2 | 0 | 0
3 | 178 | 0
4 | 198 | 0
(4 rows)

test=# create function myrand()
test-# returns integer as $i$
test$# declare i integer;
test$# begin
test$# return cast(((random()*150)+150) as Integer);
test$# end;
test$# $i$ language plpgsql;
CREATE FUNCTION

test=# update mytest set colb = myrand() where id >2;
UPDATE 2
test=# select * from mytest;
id | cola | colb
----+------+------
1 | 0 | 0
2 | 0 | 0
3 | 178 | 201
4 | 198 | 291
(4 rows)

关于sql - 如何在 postgresql 中更新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41789655/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com