从 Postgres 的自动递增主键 id 列中意外删除了信息,我的目标是用生成的一系列数据重新填充它。例如:
UPDATE mytable
SET id = (SELECT GENERATE_SERIES(1,3456))
这将引发错误:错误:用作表达式的子查询返回的多行
UPDATE mytable
SET id = SELECT a.n from generate_series(1, 3456) as a(n)
(抛出语法错误)
在 PostgreSQL 中使用生成的系列更新单列的正确方法是什么?为什么SET
在这里不起作用?
如果您有主键,则可以执行以下操作:
UPDATE mytable t
SET id = new_id
FROM (SELECT tt.*, ROW_NUMBER() OVER (ORDER BY id) as new_id
FROM mytable tt
) tt
WHERE t.id = tt.id;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句