Lỗi là từ postgres chứ không phải django. Bạn có thể viết lại điều này thành:
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;
Hoặc cách khác:
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;
Những công việc này. Chỉ cần thử nghiệm nó trên postgres-9.6. Đây là cú pháp cho CẬP NHẬT (xem danh sách từ tùy chọn ).
Hy vọng điều này sẽ hữu ích.