我在PostgreSQL中有一个现有的表“public.trip_info”,我在其中添加了一个新的列“zone”,现在我想在列中插入1到80之间的随机整数。所以我知道如何生成随机数PostgreSQL中有1到80个。
SELECT floor(random() * 80 + 1)::int;
如何将其插入到所有行的列中。 我是SQL Script的新手。
答案 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)
希望有所帮助