PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Postgresql - Spalten neu nummerieren

Achtung:

Dies ist nur sinnvoll, wenn ac_n_circ ist NICHT die Primärschlüsselspalte.

Wenn Sie sicher sind, dass Sie das brauchen (sind Sie das wirklich?), dann sollte so etwas wie das Folgende funktionieren:

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;

Alternativ:

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;

Beide Anweisungen gehen davon aus, dass es eine Primärschlüsselspalte namens id gibt .