Using window functions in an update statement Using window functions in an update statement postgresql postgresql

Using window functions in an update statement


The error is from postgres not django. You can rewrite this as:

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.rnFROM v_table_nameWHERE table_name.primary_key = v_table_name.primary_key;  

Or alternatively:

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

This works. Just tested it on postgres-9.6. Here is the syntax for UPDATE (see the optional fromlist).

Hope this helps.