使用 SQL 中的 Joining 2 tables 更新多列
Update multiple columns with Joining 2 tables in SQL
下面是我用于更新的代码。在以下条件下,SRC 和 LKP table 之间的匹配记录是 31。但是当我 运行 下面的更新语句正在更新 200 records.Could 您请建议问题出在哪里
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)
上建立索引。
下面是我用于更新的代码。在以下条件下,SRC 和 LKP table 之间的匹配记录是 31。但是当我 运行 下面的更新语句正在更新 200 records.Could 您请建议问题出在哪里
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)
上建立索引。