我有两个表,一个名为accajd,下面显示了截图,其中包含旧值和新值。还有一个名为jobcost的大约15个字段,其中3个需要使用accadj表(accno,jno和saccno)中的数据进行更新。我需要做的是在工作成本的任何地方,来自accno,jno和saccno字段的数据与来自accadj的accnoold,jnoold和saccnoold匹配,我需要用来自accnonew,jnonew和的值来替换jobcost中的数据来自accadj的saccnonew。
update jobcost
set accno =(SELECT accadj.[accnonew] FROM accadj
WHERE accadj.id = jobcost.[jno]
AND accadj.[saccnoold] = jobcost.[saccno]),
jno =(SELECT accadj.[accnonew] FROM accadj
WHERE accadj.id = jobcost.[jno]
AND accadj.[saccnoold] = jobcost.[saccno]),
saccno =(SELECT accadj.[accnonew] FROM accadj
WHERE accadj.id = jobcost.[jno]
AND accadj.[saccnoold] = jobcost.[saccno])
就编写一个查询来完成这项任务而言,这是我能想到的一切,而且它无处可靠。 jobcost表有大约15,000个条目,因此这段代码最终只能替换其中的大约100个
答案 0 :(得分:1)
检查下面的代码,它肯定会起作用,
Update jc
set jc.accno = ac.accnonew,jc.jno =ac.accnonew,jc.saccno =ac.saccnonew
from jobcost jc join accadj ac with(nolock)
on jc.accno = ac.accnoold
and jc.jno = ac.jnoold
and jc.saccno =ac.saccnoold
由于