小编典典

用数字递增更新满足条件的记录

sql

我在postgres中有一个这样的表格:

Id    Name    local_site_id    local_id
1     A       2                
2     B       2
3     C       1
4     D       2
5     E       1

如何使用SQL查询将表更新为此:

Id    Name    local_site_id    local_id
1     A       2                1
2     B       2                2
3     C       1                
4     D       2                3
5     E       1

现在,所有记录的local_id字段为空。我只想对具有的行local_site_id=2使用从1开始的递增数字来更新local_id值,可以使用SQL吗?


阅读 191

收藏
2021-05-23

共1个答案

小编典典

这是row_number()窗口函数的典型用例。假设您的主表是T,则此查询应与PostgreSQL 8.4或更高版本一起使用:

update T set local_id=s.rn 
from (select id,row_number() over(order by id) as rn from T where local_site_id=2) s
 where T.id=s.id;
2021-05-23