使用整数序列更新 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 次。只保留一个更新 -- 看似是第一个,但你不能依赖它。
我有一个包含 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 次。只保留一个更新 -- 看似是第一个,但你不能依赖它。