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

Postgres CẬP NHẬT bằng chức năng cửa sổ xếp hạng

Vì bạn không có khóa duy nhất, hãy sử dụng ctid :

update medias m
    set sort_order = new_sort_order
    from (
        select 
            ctid,
            owner_user_id, 
            sort_order, 
            row_number() over w as new_sort_order 
        from medias 
        where visible
        window w as (partition by owner_user_id order by sort_order asc, created_at asc)
    ) s
    where m.ctid = s.ctid;

Lưu ý, row_number() có thể tốt hơn rank() như là người đầu tiên không bao giờ cung cấp các bản sao.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Đánh máy chuỗi thành số nguyên

  2. Làm cách nào để truy cập một bảng trong lược đồ mà không cần phải sử dụng tiền tố lược đồ (Postgres + PHP)?

  3. postgres:Truy vấn 'select * from user' thực sự đang làm gì?

  4. chọn từ ... - dựa trên giá trị ở định dạng JSON

  5. Lỗi biểu mẫu / cơ sở dữ liệu Django:giá trị quá dài đối với ký tự loại thay đổi (4)