PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Sử dụng các hàm cửa sổ trong một câu lệnh cập nhật

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.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách thay đổi mã hóa bộ sưu tập cơ sở dữ liệu mẫu

  2. Cấu hình PostgreSQL để có khả năng quan sát

  3. PostgreSQL:CHÈN đa năng

  4. Nối / hợp nhất các giá trị mảng trong quá trình nhóm / tổng hợp

  5. Phát triển PostgreSQL cho Windows, Phần 1