在PostgreSQL整数列上生成序列号

问题描述 投票:2回答:2

我在PostgreSQL上有一个表,其中有1000行。我的表中有一个空列的整数列。我想用连续的,唯一的数字填充newid,有点像主键。

Product
-------------------------
id  name  newid  size
60   ....  null   L
72   ....  null   M
83   ....  null   xl
84   ....  null   S
85   ...

如何编写更新我的newid列的查询。

Product
-------------------------
id  name  newid  size
60   ....  1      L
72   ....  2      M
83   ....  3      xl
84   ....  4      S
85   ...
sql postgresql
2个回答
4
投票

您可以使用JOIN或子查询来执行此操作。我们的想法是使用row_number()计算新的id,然后将该值放入每一行:

with newvals (
      select p.*, row_number() over (order by id) as seqnum
      from product p
     )
update product p
    set newid = (select seqnum from newvals nv where nv.id = p.id);

1
投票

怎么样:

update mytable set
newid = id + 1000000
© www.soinside.com 2019 - 2024. All rights reserved.