Postgresql 替换'中的内容;订单';序列号列
我在postgres数据库的一个表中有一个“order”列,该列的序列中有很多缺失的数字。我在计算如何用增量的新数字替换列中当前的数字时遇到了问题(参见示例) 我所拥有的: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
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运行该语句