gpt4 book ai didi

Postgresql - 重新编号列

转载 作者:行者123 更新时间:2023-11-29 13:04:59 27 4
gpt4 key购买 nike

我需要重新编号数据库中的行。删除一些行后,我必须对某些列重新编号。我如何使用 postgresql 做到这一点?

更新:例如:我有一个这样的表:

ac_n_circ     name

1 x
2 y
8 c
15 b

我想像这样对这张表重新编号:

ac_n_circ     name

1 x
2 y
3 c
4 b

在 posgresql 中是否有任何算法或类似的东西可以做到这一点?

谢谢!

最佳答案

注意:

这仅在 ac_n_circNOT 主键列时才有意义。

如果你确定你需要这个(你真的吗?),那么像下面这样的东西应该可以工作:

with new_numbers as  (
select row_number() over (order by ac_n_circ) as new_nr,
ac_n_circ,
id
from foo
)
update foo
set ac_n_circ = nn.new_nr
from new_numbers nn
where nn.id = foo.id;

或者:

update foo 
set ac_n_circ = nn.new_number
from (
select id,
ac_n_circ,
row_number() over (order by ac_n_circ) as new_number
from foo
) nn
where nn.id = foo.id;

这两个语句都假定有一个名为 id 的主键列。

关于Postgresql - 重新编号列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16176563/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com