首页 > 解决方案 > 更改现有数据的序列号列

问题描述

我有一个表,其中包含几列填充数据。

我对 mrn 列(数字)有疑问,该列用作序列号,并且该值是随机生成的。

我想根据现有列(created_on:带时间戳的日期)重新排列 mrn 列,将 1 赋予最旧的日期,依此类推。

标签: sqlpostgresql

解决方案


您可以为此使用窗口函数:

update the_table 
   set mrn = t.rn
from (
   select primary_key_column, 
          row_number() over (order by created_on) as rn
   from the_table
) t
where t.primary_key_column = the_table.primary_key_column;

推荐阅读