假设我们有test1 ,test2 两表
create table test1(no number,name varchar2(10));
create table test2(no number,name varchar2(10));
insert into test1 values(1,\'a\');
insert into test1 values(2,\'b\');
insert into test1 values(3,\'c\');
insert into test2 values(1,\'aa\');
insert into test2 values(2,\'bb\');
至此:
test1
NO NAME
---------- ----------
1 a
2 b
3 c
test2
NO NAME
---------- ----------
1 aa
2 bb
如果要将test1表与test2表NO字段相等的记录的name字段更新为与test2表中的name字
段的值.
即以下效果:
test1
NO NAME
---------- ----------
1 aa
2 bb
3 c
那么以下的语句
update test1 a set name=(select name from test2 b where a.no=b.no);
的效果为:
test1
NO NAME
---------- ----------
1 aa
2 bb
3
要出想要的效果,可以用下面的语句来实现.
update test1 a set name=(select name from test2 b where a.no=b.no) where
exists(select name from test2 b where a.no=b.no);
也可以用下面的语句来实现:
update (select a.name aname,b.name bname from test1 a,test2 b where
a.no=b.no) set aname=bname;
不过有个前提,是给test2表的NO设为主键.
alter table test2 add primary key(no);
![](https://image.shishitao.com:8440/L0ltYWdlcy9PdXRsaW5pbmdJbmRpY2F0b3JzL05vbmUuZ2lm.gif?w=700&webp=1)
![](https://image.shishitao.com:8440/L0ltYWdlcy9PdXRsaW5pbmdJbmRpY2F0b3JzL05vbmUuZ2lm.gif?w=700&webp=1)
![](https://image.shishitao.com:8440/L0ltYWdlcy9PdXRsaW5pbmdJbmRpY2F0b3JzL05vbmUuZ2lm.gif?w=700&webp=1)
![](https://image.shishitao.com:8440/L0ltYWdlcy9PdXRsaW5pbmdJbmRpY2F0b3JzL05vbmUuZ2lm.gif?w=700&webp=1)
![](https://image.shishitao.com:8440/L0ltYWdlcy9PdXRsaW5pbmdJbmRpY2F0b3JzL05vbmUuZ2lm.gif?w=700&webp=1)
![](https://image.shishitao.com:8440/L0ltYWdlcy9PdXRsaW5pbmdJbmRpY2F0b3JzL05vbmUuZ2lm.gif?w=700&webp=1)
![](https://image.shishitao.com:8440/L0ltYWdlcy9PdXRsaW5pbmdJbmRpY2F0b3JzL05vbmUuZ2lm.gif?w=700&webp=1)
至此:
test1
NO NAME
---------- ----------
1 a
2 b
3 c
test2
NO NAME
---------- ----------
1 aa
2 bb
如果要将test1表与test2表NO字段相等的记录的name字段更新为与test2表中的name字
段的值.
即以下效果:
test1
NO NAME
---------- ----------
1 aa
2 bb
3 c
那么以下的语句
update test1 a set name=(select name from test2 b where a.no=b.no);
的效果为:
test1
NO NAME
---------- ----------
1 aa
2 bb
3
要出想要的效果,可以用下面的语句来实现.
![](https://image.shishitao.com:8440/L0ltYWdlcy9PdXRsaW5pbmdJbmRpY2F0b3JzL05vbmUuZ2lm.gif?w=700&webp=1)
![](https://image.shishitao.com:8440/L0ltYWdlcy9PdXRsaW5pbmdJbmRpY2F0b3JzL05vbmUuZ2lm.gif?w=700&webp=1)
![](https://image.shishitao.com:8440/L0ltYWdlcy9PdXRsaW5pbmdJbmRpY2F0b3JzL05vbmUuZ2lm.gif?w=700&webp=1)
也可以用下面的语句来实现:
![](https://image.shishitao.com:8440/L0ltYWdlcy9PdXRsaW5pbmdJbmRpY2F0b3JzL05vbmUuZ2lm.gif?w=700&webp=1)
![](https://image.shishitao.com:8440/L0ltYWdlcy9PdXRsaW5pbmdJbmRpY2F0b3JzL05vbmUuZ2lm.gif?w=700&webp=1)
![](https://image.shishitao.com:8440/L0ltYWdlcy9PdXRsaW5pbmdJbmRpY2F0b3JzL05vbmUuZ2lm.gif?w=700&webp=1)
alter table test2 add primary key(no);
![](https://image.shishitao.com:8440/aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMzU2OTUvMjAyMTEwLzM1Njk1LTIwMjExMDA4MTYwNjI0ODEzLTE2OTQ1OTE1OTguanBn.jpg?w=700&webp=1)