我在 oracle 中有一个表,其中一列的所有行都必须更新为起始值 500 并递增 1。
我试图在网上找到类似的东西,但找不到任何有用的东西。 oracle 和 PL/SQL 不是我的专长。任何帮助,将不胜感激。
最佳答案
我不会使用 PL/SQL,因为它可以用纯 SQL 完成。
您可以使用以 500
开头并以 1
递增的 SEQUENCE。
例如,
设置
SQL> DROP SEQUENCE s ;
Sequence dropped.
SQL>
SQL> CREATE SEQUENCE s START WITH 500 INCREMENT BY 1;
Sequence created.
SQL>
SQL> DROP TABLE t PURGE;
Table dropped.
SQL>
SQL> CREATE TABLE t AS SELECT LEVEL id FROM dual CONNECT BY LEVEL < =20;
Table created.
SQL>
SQL> SELECT * FROM t;
ID
----------
1
2
3
4
5
6
7
8
9
10
11
ID
----------
12
13
14
15
16
17
18
19
20
20 rows selected.
SQL>
现在,让我们用序列更新表格。
SQL> UPDATE t SET ID = s.nextval;
20 rows updated.
SQL>
SQL> SELECT * FROM t;
ID
----------
500
501
502
503
504
505
506
507
508
509
510
ID
----------
511
512
513
514
515
516
517
518
519
20 rows selected.
SQL>
因此,您已使用从 500 开始并递增 1 的序列更新了所有行。
关于database - 如何更新 oracle 中一列的所有行,起始值为 500 并在 oracle 中递增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29225376/