सावधानी:
यह तभी समझ में आता है जब ac_n_circ
है नहीं प्राथमिक कुंजी कॉलम।
यदि आप सुनिश्चित हैं कि आपको इसकी आवश्यकता है (क्या आप वास्तव में हैं?), तो निम्न की तरह कुछ काम करना चाहिए:
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;
वैकल्पिक रूप से:
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;
दोनों कथन मानते हैं कि id
. नामक एक प्राथमिक कुंजी कॉलम है ।