我在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吗?
local_site_id=2
这是row_number()窗口函数的典型用例。假设您的主表是T,则此查询应与PostgreSQL 8.4或更高版本一起使用:
row_number()
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;