mikecomrade 发表于 2012-12-12 15:09
我实验了一下,(1)语句执行后,仅对应更新了t1中存在的id, 同(2)效果一致
不可能你没搞明白我的意思
create table t2
(t1d varchar2(20),tname varchar2(20));
create table t1
(t1d varchar2(20),tname varchar2(20));
insert into t1 values('1','null');
insert into t2 values('1','1');
insert into t2 values('2','2');
SQL> select * from t1;
T1D
TNAME
-------------------- --------------------
1
null
SQL> select * from t2;
T1D
TNAME
-------------------- --------------------
1
1
2
2
SQL> update t2 set t2.tname=(select tname from t1 where t1.t1d=t2.t1d);
2 rows updated
SQL> commit;
Commit complete
SQL> select * from t1;
T1D
TNAME
-------------------- --------------------
1
null
SQL> select * from t2;
T1D
TNAME
-------------------- --------------------
1
null
2
你的第一种写法会将不在t1中而在t2中存在的记录也给更新了tname
|