sql >> Databáze >  >> RDS >> PostgreSQL

Postgresql - Přečíslování sloupců

Upozornění:

To má smysl pouze v případě, že ac_n_circ je NE sloupec primárního klíče.

Pokud jste si jisti, že to potřebujete (opravdu?), pak by mělo fungovat něco jako následující:

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;

Případně:

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;

Oba příkazy předpokládají, že existuje sloupec primárního klíče s názvem id .




  1. Jaký je nejrychlejší způsob, jak aplikovat 150 milionů aktualizací na tabulku PostgreSQL

  2. Resetujte sekvenci podle roku, nikoli podle minimální nebo maximální hodnoty

  3. PHP PDO escape otazník, takže si nemyslí, že je to zástupný symbol

  4. Předání seznamu do uložené procedury MySQL a kontrola, zda jsou přítomny VŠECHNY hodnoty