使用整数序列更新 postgres 列

Updating postgres column with sequence of integers

我有一个包含 130 行的 postgres table 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 次。只保留一个更新 -- 看似是第一个,但你不能依赖它。