row_number()
. के लिए यह एक सामान्य उपयोग का मामला है विंडो फ़ंक्शन। मान लें कि आपकी मुख्य तालिका टी है, यह क्वेरी पोस्टग्रेस्क्ल 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;