作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个格式如下的表格:
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/
我是一名优秀的程序员,十分优秀!