Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Oracle:Memperbarui kolom tabel menggunakan ROWNUM bersama dengan klausa ORDER BY

Ini seharusnya berhasil (berfungsi untuk saya)

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);

ATAU Anda menggunakan MERGE penyataan. Sesuatu seperti ini.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nilai Data Seiring Waktu

  2. Bagaimana cara menangani parameter opsional dalam kueri SQL?

  3. Bagaimana Mengkompilasi Semua Paket Tidak Valid dalam Skema?

  4. Apakah PL/SQL memiliki StringTokenizer yang setara dengan Java?

  5. EM 12c Menyesuaikan Nilai Ambang Batas