Sql server 通过子查询返回的一组值更新sql表行
我想更新子查询返回的表IVRecords set IVNO=值Sql server 通过子查询返回的一组值更新sql表行,sql-server,Sql Server,我想更新子查询返回的表IVRecords set IVNO=值 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 但是子查询返回多个值:25432
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
但是子查询返回多个值:254325346425346
我有超过58000张唱片
那么,如何使用子查询返回的值来更新表IVRecords?从[DVHead]中选择a.IVNO,在a.DELIVERYNO=b.DELIVERYNO)上逐个内部联接[IVRecords]b
IVRecords的IVNo具有因错误更新而导致的重复值22644。DVHead的IVNO是正确的IVNO记录。所以我想把它们复制到有错误IVNo的IVR记录中。
02表具有键DELIVERYNO。
我的预期结果:
之前:
我认为这将是您代码的等效基于集合的版本:
update ivr
set ivr.ivno = a.ivno
from IVRecords ivr
inner join DVHead a
on ivr.deliveryNO = a.deliveryno
where ivr.ivno = '22664'
这应该比问题中的逐行(逐个)版本快得多
另外,这里有一个关于代码如何工作的例子
(尽管,如果有不正确的地方,请发布一个您拥有的数据和预期输出的示例)我认为这将是您代码的一个等效的基于集合的版本:
update ivr
set ivr.ivno = a.ivno
from IVRecords ivr
inner join DVHead a
on ivr.deliveryNO = a.deliveryno
where ivr.ivno = '22664'
这应该比问题中的逐行(逐个)版本快得多
另外,这里有一个关于代码如何工作的例子
(尽管,如果有不正确的地方,请发布您拥有的数据和预期输出的示例)您实际上想在这里做什么?请查看我编辑的帖子您实际上想在这里做什么?请查看我编辑的帖子是真的吗?在我看来,只要表中有invo=22264条记录,他/她就想更新IVRecords表。确实令人困惑…@user3035133然后请发布一个示例,说明您现在拥有的数据以及预期的输出。@user3035133我的查询中有一个轻微的输入错误。请现在查看。仅受影响的两行。我有58045行需要更新编辑可能是ivr.ivno=22664的条件。但这是原始问题的一部分,这就是我为什么添加它的原因。真的吗?在我看来,只要表中有invo=22264条记录,他/她就想更新IVRecords表。确实令人困惑…@user3035133然后请发布一个示例,说明您现在拥有的数据以及预期的输出。@user3035133我的查询中有一个轻微的输入错误。请现在查看。仅受影响的两行。我有58045行需要更新编辑可能是ivr.ivno=22664的条件。但这是原始问题的一部分,这就是我添加它的原因。