向postgresql中的列添加递增值

t9eec4r0  于 2023-01-25  发布在  PostgreSQL
关注(0)|答案(4)|浏览(228)

我有一个包含69000 records的表。现在,如何添加一个新列(比如索引),该列应该包含value 1 for 1st row, 2 for 2nd row ....etc
我想要以下结果

id      name      index
 --------------------------
 9796896   sandy       1
 796869    raj         2
u4vypkhs

u4vypkhs1#

添加列并使用如下内容更新它:

with cte as
(
   select *
       , rank() over (order by id desc) as ranker
   from test
)
update test
   set index = ranker
from cte
where cte.id = test.id;
0wi1tuuw

0wi1tuuw2#

试试这个:

ALTER TABLE Tablename
    ADD COLUMN index int               
        GENERATED BY DEFAULT AS IDENTITY;
jv4diomz

jv4diomz3#

可以使用oracle的标识列:

alter table your_Table add index_ number GENERATED by default as IDENTITY;

此外,您还可以添加列,然后为其赋值:

alter table your_Table add index_ number;

update your_Table tt
set tt.index_  =  (select rn from (
select row_number() over (order by id desc) rn
from your_Table t
) t where t.id = tt.id)

干杯!

8fsztsew

8fsztsew4#

这对我运行postgres 9.6来说非常有效:

ALTER TABLE test ADD COLUMN index BIGSERIAL ;

缩短一个内衬,并在未来的衬垫中保持自动递增。
虽然我认为计数从零开始。我会更新答案后,我检查。

相关问题