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

Oracle:Актуализиране на колона на таблица с помощта на ROWNUM във връзка с клауза ORDER BY

Това трябва да работи (работи за мен)

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Грешка при добавяне на режим на готовност

  2. Проблеми при извикване на съхранена процедура от C# с голям CLOB

  3. EF и TransactionScope както за SQL Server, така и за Oracle без ескалиране/обхват до DTC?

  4. ПРОМЕНИ КОЛОНА в оракул - Как да проверим дали колона е нула, преди да се зададе на нула?

  5. Функция LAST_DAY() в Oracle