PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Postgres АКТУАЛИЗАЦИЯ с помощта на функцията за прозорец за ранг

Тъй като нямате уникален ключ, използвайте 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;

Забележка, row_number() може да е по-добро от rank() тъй като първият никога не дава дубликати.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да получите списъка с функции в базата данни в PostgreSQL заедно с нейните параметри?

  2. Как да включите нулеви стойности в заявка `tablefunc` в postgresql?

  3. свържете се със сървъра на postgres на google compute engine

  4. PostgreSQL заявката е бавна, когато се използва NOT IN

  5. Обединяване на непрекъснати редове с Postgresql