下面是我用于更新的代码。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)
上建立索引。