PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

AKTUALIZACJA Postgresa za pomocą funkcji okna rang

Ponieważ nie masz unikalnego klucza, użyj 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;

Uwaga, row_number() może być lepszy niż rank() jako pierwszy nigdy nie daje duplikatów.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. jak używać poprawnie, jeśli instrukcja postgresql

  2. Jak działa Random() w PostgreSQL

  3. Jak zmapować org.postgresql.geometric.PGpoint na typ hibernacji?

  4. PG gem nie instaluje się w aplikacji Rails:Gem::Ext::BuildError:BŁĄD:Nie udało się zbudować natywnego rozszerzenia gem

  5. Zwraca RDSdataService execute_statement (BadRequestException)