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

Cập nhật trình tự cho điều kiện cụ thể - Oracle

Tại sao không chỉ sử dụng substr() ?

select t.*, to_number(substr(element_id, 3, 2)) as my_seq
from t;

Cách tiếp cận thứ hai là sử dụng dense_rank() :

select t.*,
       dense_rank() over (partition by u_a_id order by substr(element_id, 1, 4)) as my_seq
from t;

Bạn có thể sử dụng merge nếu bạn thực sự muốn cập nhật dữ liệu:

merge into t using
      (select t.*,
              dense_rank() over (partition by u_a_id order by substr(element_id, 1, 4)) as new_my_seq
       from t
      ) s
      on s.u_a_id = t.u_a_id and s.element_id = st.element_id
when matched then update
    set t.my_seq = s.new_my_seq;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chỉ mục phân vùng Oracle

  2. Làm thế nào để dừng quá trình hoàn tác oracle?

  3. Khóa Liquibase - lý do?

  4. Xóa thẻ trống khỏi xmltype oracle

  5. Làm cách nào để trích xuất tệp từ trường Oracle BLOB?