根据匹配的列更新另一个表的列中的列

psa*_*sam 3 sql sql-server join sql-update

以下查询正在更新所有(80k)记录而不是匹配(5k)的记录.有什么问题,如何纠正?

update ALAM set ALAM.CDate = (select IDCP.CDate from IDCP 
                              where ALAM.ASID = IDCP.ASID and ALAM.AID = IDCP.AID 
                                    and ALAM.MCode = '10001')
Run Code Online (Sandbox Code Playgroud)

ALAM记录计数表=约80,000条记录IDCP记录计数表=约5,000条记录

作为附加信息:

select ALAM.ASID, ALAM.AID, ALAM.CDate 
from ALAM, IDCP 
where ALAM.ASID = IDCP.ASID and ALAM.AID = IDCP.AID and ALAM.MCode = '10001' 
Run Code Online (Sandbox Code Playgroud)

结果5000条记录约

one*_*hen 6

MERGE INTO ALAM
   USING IDCP 
      ON ALAM.ASID = IDCP.ASID 
         AND ALAM.AID = IDCP.AID 
         AND ALAM.MCode = '10001'
WHEN MATCHED THEN
   UPDATE 
      SET CDate = IDCP.CDate;
Run Code Online (Sandbox Code Playgroud)