t1 t2
1
x
1
2
3
upto 20
所以我希望所有x
值都复制到t2
我该怎么办?
更详细:
有2个表' test1' ,' test2'。 ' test1'有两列,即' t1' ,' t2'和' test2'有一列,即#39; x'。所以我需要 将test2.x列值复制到test1.t2列。 test1.t1 - 1,test1.t2 - null,test2.x - 1,2,3,4 ..... 20
答案 0 :(得分:2)
问题文本不清楚,据我所知,你将test1表的t1列的值设为1,2,3 ... 20
,如果你想从test2.x复制全部,那么你可以使用:
update test1 t1
set t1.t2 = ( select t2.x
from test2 t2
where t2.x = t1.t1 );
但是,实际上不需要另一个表格(table2
)
update test1 t1 set t1.t2 = t1.t2;
关于上次修改,您需要merge
声明:
merge into test1 a
using test2 b
on (nvl(a.t1,0) = nvl(b.x,0))
when matched then
update set a.t2 = nvl(b.x,0)
when not matched then
insert(t2)
values(nvl(b.x,0));
然后你可以得到以下内容:
select * from test1 order by t2;
T1 T2
-- --------------------------------------------------
1 1
2
3
4
5
6
7
8
9
10
.
.
.
20