Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Oracle:Cập nhật cột bảng bằng ROWNUM kết hợp với mệnh đề ORDER BY

Điều này sẽ hoạt động (phù hợp với tôi)

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

HOẶC bạn sử dụng MERGE tuyên bố. Một cái gì đó như thế này.

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. Cách nhanh chóng để tạo các chuỗi được nối trong Oracle

  2. Xác định vị trí của tệp tnsnames.ora có liên quan

  3. Nối và nhóm nhiều hàng trong Oracle

  4. ĐẶT SQLBLANKLINES:Cách Cho phép Dòng trống trong SQLcl &SQL * Plus

  5. Oracle- Chuỗi phân tách được phân cách bằng dấu phẩy (chuỗi chứa khoảng trắng và dấu phẩy liên tiếp)