Thận trọng:
Điều này chỉ có ý nghĩa nếu ac_n_circ
là KHÔNG cột khóa chính.
Nếu bạn chắc chắn rằng bạn cần cái này (bạn có thực sự không?), Thì một cái gì đó như sau sẽ hoạt động:
with new_numbers as (
select row_number() over (order by ac_n_circ) as new_nr,
ac_n_circ,
id
from foo
)
update foo
set ac_n_circ = nn.new_nr
from new_numbers nn
where nn.id = foo.id;
Ngoài ra:
update foo
set ac_n_circ = nn.new_number
from (
select id,
ac_n_circ,
row_number() over (order by ac_n_circ) as new_number
from foo
) nn
where nn.id = foo.id;
Cả hai câu lệnh đều giả định rằng có một cột khóa chính có tên là id
.