方法一(推荐):

?

1
2
3
4
5
6
7
8
9
UPDATE 表2
  SET 表2.C =
     (SELECT B
       FROM 表1
      WHERE 表1.A = 表2.A)
 WHERE EXISTS
     (SELECT 1
       FROM 表1
      WHERE 表1.A = 表2.A);

尤其注意最后的外层where条件尤为重要,是锁定其批量更新数据的范围。

方法二:

?

1
2
3
4
5
6
MERGE INTO 表2
   USING 表1
    ON (表2.A = 表1.A)                    -- 条件是 A 相同
WHEN MATCHED
THEN
  UPDATE SET 表2.C = 表1.B                   -- 匹配的时候,更新

grdk_dk_hkmx中yqksrq和yhkrq为空:


      merge into grdk_dk_hkmx a 

using (select a.f001 , a.f002 , a.f017 ,a.f024,a.f025 from wa350_hhgjj.gd_dk_hk a inner join grdk_dk_hkmx b on a.f001 = b.jkhtbh

and a.f002 = b.dqqc and a.f017 = b.ywlsh

where trim(a.f024) is not null and trim(b.yqksrq) is null) b 

on (a.jkhtbh = b.f001 and a.dqqc = b.f002 and a.ywlsh = b.f017)

when matched then update  set a.yqksrq = b.f024 , a.yhkrq = b.f025