写了一个,应该是用exists的常规写法吧? update A T1 set studentId=(select studentId2 from B where t1.studentId=studentId1) where exists(select 1 from studentId2 where t1.studentId=studentId1)
字段写错了 update A T1 set studentId=(select studentId2 from B where t1.studentId=studentId1) where exists(select 1 from B where t1.studentId=studentId1)
update A set A.studentId = (select B.studentId2 from B where B.studentId1 = A.studentId);
同意3楼写法. 看看可不可以这样写: update A T1 set studentId=nvl((select studentId2 from B where t1.studentId=studentId1),studentId)
3楼的写法把最后的where条件去掉了,这样会造成A.studentId和B.studentId1等不等于的情况下都更新吧!! 就好像update A set A.studentId = '1';一样,无条件更新.
update A T1 set studentId=(select studentId2 from B where t1.studentId=studentId1)
where exists(select 1 from studentId2 where t1.studentId=studentId1)
update A T1 set studentId=(select studentId2 from B where t1.studentId=studentId1)
where exists(select 1 from B where t1.studentId=studentId1)
看看可不可以这样写:
update A T1 set studentId=nvl((select studentId2 from B where t1.studentId=studentId1),studentId)
就好像update A set A.studentId = '1';一样,无条件更新.