方法一(推荐):

?

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