我想通过子查询更新表IVRecords set IVNO = value return
<Image src={imageObject.Url} onError={i => i.target.style.display='none'} />
但子查询返回多个值:254,325,25346,25346 我有超过58000条记录
那么如何使用子查询返回值来更新表IVRecords从[DVHead]中逐个选择a.IVNO a.DELIVERYNO = b.DELIVERYNO上的内连接[IVRecords] b?
IVRecords的IVNo具有由错误更新引起的重复值22644。 DVHead的IVNO是IVRecords的正确IVNO。所以我想把它们复制到有错误IVNo的IVRecords。 02表有关键DELIVERYNO。 我的预期结果: 之前:
While (Select Count(*) From [IVRecords] Where IVNO= '22644') > 0
Begin
update [IVRecords] set IVNO= (Select a.IVNO from [DVHead] a inner join [IVRecords] b on a.DELIVERYNO=b.DELIVERYNO)
End
答案 0 :(得分:2)
我认为这将是您的代码的基于集合的等效版本:
update ivr
set ivr.ivno = a.ivno
from IVRecords ivr
inner join DVHead a
on ivr.deliveryNO = a.deliveryno
where ivr.ivno = '22664'
这应该比你的问题中的逐行(逐个)版本运行得快得多。
此外,这里有SQLFiddle代码如何工作。
(虽然,如果有些不对劲,请发布您拥有的数据和预期输出的示例)