在sql server中:
update A set t1 = B.t2
from A,B
where A.id = B.sid;
在oracle中不支持以上语句,需要用以下语句代替:
update A set t1 =
(select t2 from B where A.id= B.sid)
where exists
(select 1 from B where A.id= B.sid);
注:
(1)此处使用(select 1 from B where A.id= B.sid); 的意义:
首先判断符合A.id= B.sid条件的记录存在时才执行以上update语句,否则当符合A.id= B.sid条件的记录不存在时,会将A表的t1列所有值都置为空,此处用数字1、2、3……都无所谓,只是看有无结果而已。
(2)此语句只有当B表的sid字段有唯一约束时才可用,否则会报“单行子查询返回多于一个行”错误。