sql >> Database teknologi >  >> RDS >> PostgreSQL

Brug af vinduesfunktioner i en opdateringserklæring

Fejlen er fra postgres not django. Du kan omskrive dette som:

MED v_table_name AS( SELECT row_number() over (partition efter col2 rækkefølge efter col3) AS rn, primærnøgle FRA tabelnavn) OPDATERING tabelnavn sæt tabelnavn.kol1 =v_tabelnavn.rnFRA v_tabelnavn HVOR tabelnavn.primær_nøgle =.primær_nøgle;

Eller alternativt:

OPDATERING tabelnavn sæt tabelnavn.kol1 =v_tabelnavn.rnFROM (VÆLG rækkenummer() over (partition efter col2 rækkefølge efter kol3) AS rn, primærnøgle FRA tabelnavn) AS v_tabelnavn HVOR tabelnavn.primær_nøgle =v_tabelnavn.primær_nøgle; 

Dette virker. Har lige testet det på postgres-9.6. Her er syntaksen for OPDATERING (se den valgfri fra-liste ).

Håber dette hjælper.




  1. ORA-01653:ude af stand til at udvide tabellen med i tablespace ORA-06512

  2. SQL-antal

  3. 4 måder at ændre tidszonen i Oracle

  4. Hvorfor kaster SQL-serveren denne fejl:Kan ikke indsætte værdien NULL i kolonnen 'id'?