Postgresql 替换'中的内容;订单';序列号列

Postgresql 替换'中的内容;订单';序列号列,postgresql,Postgresql,我在postgres数据库的一个表中有一个“order”列,该列的序列中有很多缺失的数字。我在计算如何用增量的新数字替换列中当前的数字时遇到了问题(参见示例) 我所拥有的: id order name --------------- 1 50 Anna 2 13 John 3 2 Bruce 4 5 David 我想要的是: id order name --------------- 1 4 Anna

我在postgres数据库的一个表中有一个“order”列,该列的序列中有很多缺失的数字。我在计算如何用增量的新数字替换列中当前的数字时遇到了问题(参见示例)

我所拥有的:

 id  order  name
 ---------------
  1    50   Anna
  2    13   John
  3     2   Bruce
  4     5   David
我想要的是:

 id  order  name
 ---------------
  1     4   Anna
  2     3   John
  3     1   Bruce
  4     2   David
列的旧版本中包含最低订单号的行应获得新订单号“1”,之后的下一行应获得“2”等。

您可以使用
行号()
计算新的订单号。其结果可在update语句中使用:

update the_table
   set "order" = t.rn
from (
  select id, row_number() over (order by "order") as rn
  from the_table
) t 
where t.id = the_table.id;

这假定
id
是该表的主键

@simpleProgrammer:您可以通过JDBC运行该语句