在SQL中使用join 2表更新多个列



下面是我用于更新的代码。SRC与LKP表在以下条件下的匹配记录为31条。但是当我运行下面的更新语句时,它更新了200条记录。请问问题出在哪里?

UPDATE SRC  src      
SET (src.A,src.B,src.C,src.D) = (select lkp.A,lkp.B,lkp.C,'1' 
from LKP lkp
inner join SRC
ON src.id_1=lkp.id_1
and src.CC=lkp.CC)

有两个问题:

  • 您没有WHERE子句,因此所有列都被更新。
  • 您在子查询中引用SRC

我猜你想要的是:

UPDATE SRC src      
SET (src.A, src.B, src.C, src.D) =
(select lkp.A, lkp.B, lkp.C, '1' 
from LKP lkp
where src.id_1 = lkp.id_1 and src.CC = lkp.CC
)
WHERE EXISTS (select 1
from LKP lkp
where src.id_1 = lkp.id_1 and src.CC = lkp.CC
);

为了提高性能,您需要在LKP(id_1, cc)上建立索引。

最新更新