Oracle: как прошить определенный столбец?

Как мне вернуть определенный столбец для всех строк в таблице?

Например, учитывая эту таблицу:

select * from t as of scn 1201789714628;
a b 
- - 
x 1 
y 2 
z 3 
select * from t;
a b 
- - 
x 4 
y 5 
z 6 

Я могу вспомнить столбец в определенной строке следующим образом:

update t set b = (select b from t as of scn 1201789714628 where a='x') where a='x';
select * from t;
a b 
- - 
x 1 
y 5 
z 6 

но я не могу понять синтаксис, чтобы установить b в его предыдущее значение это для всех строк.

update t t1 set b = (select b from t as of scn 1201789714628) t2 where t1.a = t2.a;
Error at Command Line:11 Column:60
SQL Error: ORA-00933: SQL command not properly ended

1 ответ

Решение

Вы можете попробовать это:

update t t1 
  set b = (select b from (select a, b from t as of scn 1201789714628) t2
           where t1.a = t2.a);

PS Я бы рекомендовал скопировать ваш снимок во временную таблицу, если вы не собираетесь обновлять его прямо сейчас (он может исчезнуть очень скоро).

Другие вопросы по тегам