sql >> Database >  >> RDS >> PostgreSQL

Vensterfuncties gebruiken in een update-instructie

De fout is van postgres, niet van django. Je kunt dit herschrijven als:

WITH v_table_name AS
(
    SELECT row_number() over (partition by col2 order by col3) AS rn, primary_key
    FROM table_name
) 
UPDATE table_name set table_name.col1 = v_table_name.rn
FROM v_table_name
WHERE table_name.primary_key = v_table_name.primary_key;  

Of anders:

UPDATE table_name set table_name.col1 = v_table_name.rn
FROM  
(
    SELECT row_number() over (partition by col2 order by col3) AS rn, primary_key
    FROM table_name
) AS v_table_name
WHERE table_name.primary_key = v_table_name.primary_key;

Dit werkt. Net getest op postgres-9.6. Hier is de syntaxis voor UPDATE (zie de optionele fromlist ).

Ik hoop dat dit helpt.




  1. SQL Server-fout:tekenreeks of binaire gegevens worden afgekapt

  2. Converteer efficiënt rijen naar kolommen in de sql-server

  3. Referentie-alias (berekend in SELECT) in WHERE-component

  4. SQLcl om gegevens over te zetten van Oracle naar PostgreSQL of YugabyteDB 🅾🐘🚀