在PostgreSQL整数列上生成序列号

时间:2015-06-22 11:15:46

标签: sql postgresql

我在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   ...

2 个答案:

答案 0 :(得分: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 :(得分:1)

怎么样:

update mytable set
newid = id + 1000000