PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

UPDATE Postgres menggunakan fungsi jendela peringkat

Karena Anda tidak memiliki kunci unik, gunakan 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;

Catatan, row_number() mungkin lebih baik dari rank() sebagai yang pertama tidak pernah memberikan duplikat.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Fungsi Jendela atau Ekspresi Tabel Umum:hitung baris sebelumnya dalam jangkauan

  2. gabungkan dua tabel berbeda dan hapus entri yang digandakan

  3. Pola &Pengubah Template untuk Pemformatan Numerik di PostgreSQL

  4. 7 Tips Praktik Terbaik untuk Pemuatan Data Massal PostgreSQL

  5. Kueri asli JPA mengembalikan Double atau BigDecimal