sql >> Databáze >  >> RDS >> PostgreSQL

Postgres UPDATE pomocí funkce okna hodnocení

Protože nemáte jedinečný klíč, použijte 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;

Poznámka:row_number() může být lepší než rank() jako první nikdy nedává duplikáty.



  1. Rozdíl mezi mysql a mysqli

  2. Jak nastavit časové razítko s časovým pásmem v Laravel 5 Migrate

  3. MySql:Nastavte limit pro duplicitní sloupec

  4. SQL:jak používat UNION a objednávat podle konkrétního výběru?