Database version:oracle 11gr2, my table is like:
create table t_test(t_id number,t_value number)
insert into t_test (t_id) values (1);
insert into t_test (t_id) values (2);
insert into t_test (t_id) values (6);
insert into t_test (t_id) values (10);
insert into t_test (t_id) values (3);
t_id t_value
1 null
2 null
6 null
10 null
3 null
My expecting update is like:
select t.t_id,row_number() over (order by t.t_id)
from t_test t
t_id row_number() over (order by t.t_id)
1 1
2 2
6 4
10 5
3 3
But analytic function is not allowed in update view:
update
(select t.value,row_number() over (order by t.t_id) rn
from t_test t)
set value=rn
Without no doubt,it causes ORA-01732. How do I put my update query?
Try this
update t_test
set t_value = ( select rn
from ( select i.t_id, row_number() over (order by i.t_id) rn
from t_test i) tab
where tab.t_id= t_test.t_id )