如何解决用整数序列更新 postgres 列
我有一个包含 130 行的 postgres 表 bar
。我想用从 1 到 130 的递增整数序列自动填充 id
列。当我尝试以下代码时:
update bar
set id = t.num FROM (
SELECT *
FROM generate_series(1,130) num) t
该列已更新,但每行都包含 1。我在这里做错了什么以及此过程的正确语法是什么?
解决方法
您需要一个主键来标识每一行。然后你可以使用:
update bar b
set id = b2.new_id
from (select b.*,row_number() over (order by id) as new_id
from bar
) b2;
where b.pk = b2.pk;
您的版本尝试更新每一行 130 次。只保留一个更新 - 看似是第一个,但您不能依赖它。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。