如何更新 oracle 中一列的所有行,起始值为 500 并在 oracle 中递增
how to update all rows of a column in oracle with a start value of 500 and incrementing in oracle
我在 oracle 中有一个 table,其中一列的所有行都必须更新为起始值 500 并递增 1。
我试图在网上找到类似的东西,但找不到任何有用的东西。 oracle和PL/SQL不是我的专长。任何帮助,将不胜感激。
请这样试,
DECLARE
VAL = 500;
BEGIN
FOR REC IN ( SELECT
*
FROM
Table1
)
LOOP
UPDATE Table1 SET col1 = VAL WHERE COL1 = REC.COL1 ;
VAL = VAL +1;
END LOOP;
END;
我不会使用 PL/SQL,因为它可以在 SQL 中完成。
您可以使用 SEQUENCE,以 500
开头并递增 1
。
例如,
设置
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>
现在,让我们用序列更新 table。
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 的序列更新了所有行。
DECLARE
VAL NUMBER := 1;
BEGIN
FOR REC IN ( select *
from customers
)
LOOP
UPDATE customers SET ID1 = VAL WHERE ID = REC.ID ;
VAL := VAL +1;
END LOOP;
END;
我在 oracle 中有一个 table,其中一列的所有行都必须更新为起始值 500 并递增 1。
我试图在网上找到类似的东西,但找不到任何有用的东西。 oracle和PL/SQL不是我的专长。任何帮助,将不胜感激。
请这样试,
DECLARE
VAL = 500;
BEGIN
FOR REC IN ( SELECT
*
FROM
Table1
)
LOOP
UPDATE Table1 SET col1 = VAL WHERE COL1 = REC.COL1 ;
VAL = VAL +1;
END LOOP;
END;
我不会使用 PL/SQL,因为它可以在 SQL 中完成。
您可以使用 SEQUENCE,以 500
开头并递增 1
。
例如,
设置
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>
现在,让我们用序列更新 table。
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 的序列更新了所有行。
DECLARE
VAL NUMBER := 1;
BEGIN
FOR REC IN ( select *
from customers
)
LOOP
UPDATE customers SET ID1 = VAL WHERE ID = REC.ID ;
VAL := VAL +1;
END LOOP;
END;