sql >> データベース >  >> RDS >> Oracle

Oracle:ROWNUMをORDERBY句と組み合わせて使用​​してテーブル列を更新する

    これはうまくいくはずです(私にとってはうまくいきます)

    update table_a outer 
    set sequence_column = (
        select rnum from (
    
               -- evaluate row_number() for all rows ordered by your columns
               -- BEFORE updating those values into table_a
               select id, row_number() over (order by column1, column2) rnum  
               from table_a) inner 
    
        -- join on the primary key to be sure you'll only get one value
        -- for rnum
        where inner.id = outer.id);
    

    または、MERGEを使用します 声明。このようなもの。

    merge into table_a u
    using (
      select id, row_number() over (order by column1, column2) rnum 
      from table_a
    ) s
    on (u.id = s.id)
    when matched then update set u.sequence_column = s.rnum
    


    1. SQLServerのMaven依存関係の設定

    2. NetBeans 9.0、パート2のJava9でJShellを使用する

    3. PostgreSQLでユーザーをスーパーユーザーに変更する方法

    4. Spring、Hibernate、Blobの遅延読み込み