如何将随机整数插入PostgreSQL中的特定列

时间:2016-12-15 02:31:02

标签: sql database postgresql

我在PostgreSQL中有一个现有的表“public.trip_info”,我在其中添加了一个新的列“zone”,现在我想在列中插入1到80之间的随机整数。所以我知道如何生成随机数PostgreSQL中有1到80个。

SELECT floor(random() * 80 + 1)::int;

如何将其插入到所有行的列中。 我是SQL Script的新手。

2 个答案:

答案 0 :(得分:3)

这个怎么样?

update public.trip_info
    set zone = floor(random() * 80 + 1)::int;

答案 1 :(得分:1)

自从我用postgres写作以来已经有一段时间了。但是,所有基于SQL的数据库的想法几乎相同。

为了将随机值插入新列,您必须对表执行更新。

以下是使用MySQL的示例:

- 初步创建&插入

mysql> create table t1(
    -> name varchar(20)
    -> ); 
Query OK, 0 rows affected (0.20 sec)

mysql> insert into t1 values('blah blah blah'), ('aaa'); 
Query OK, 2 rows affected (0.04 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> select * from t1; 
+----------------+
| name           |
+----------------+
| blah blah blah |
| aaa            |
+----------------+
2 rows in set (0.00 sec)

- alter table

mysql> alter table t1 add zone int not null;
Query OK, 0 rows affected (0.28 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> select * from t1; 
+----------------+------+
| name           | zone |
+----------------+------+
| blah blah blah |    0 |
| aaa            |    0 |
+----------------+------+
2 rows in set (0.00 sec)

- 更新特定列

mysql> UPDATE t1 SET zone=floor(rand()*(80+1)) WHERE name='aaa';
Query OK, 1 row affected (0.11 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from t1; 
+----------------+------+
| name           | zone |
+----------------+------+
| blah blah blah |    0 |
| aaa            |    6 |
+----------------+------+
2 rows in set (0.00 sec)

- 立即更新整个表格

mysql> UPDATE t1 SET zone=floor(rand()*(80+1));
Query OK, 2 rows affected (0.04 sec)
Rows matched: 2  Changed: 2  Warnings: 0

mysql> select * from t1; 
+----------------+------+
| name           | zone |
+----------------+------+
| blah blah blah |   67 |
| aaa            |   76 |
+----------------+------+
2 rows in set (0.00 sec)

希望有所帮助