【发布时间】:2018-05-28 20:20:56
【问题描述】:
我需要同时更新数据库中的几行。现在的问题是我只会知道第一行的唯一 ID,但之后我将有 X 行其他行,这些行也需要使用一些数据进行更新。我会知道我需要多少个循环才能更新它们 - 只需要知道如何去做。
我的查询如下所示:
UPDATE bLine
SET @val1
WHERE theGuid = @val2;
现在@val1 的数据如下所示:
ID | qty_SerialNum | qty_Location | qty_Property | theGUID
---+---------------+--------------+--------------+---------------------------
5 | 6845fg56 | Home | NA | a45vz-u300-2bd-4710j-vf09
6 | fk469fkh | Dock#4 | NA |
7 | geww2 | Dock#1 | Local |
...
@val1:
@val1 = qty_SerialNum = '6845fg56,fk469fkh,geww2',
qty_Location = 'Home,Dock#4,Dock#1',
qty_Property = 'NA,NA,Local'
@val2 = theGUID = 'a45vz-u300-2bd-4710j-vf09'
所以这一切都很好,因为我知道 第一行 的 GUID 需要更新,但 之后的每一行 我不会知道。
所以第一次更新看起来像是 3 次更新:
UPDATE
bLine
SET
(qty_SerialNum = '6845fg56',qty_Location = 'Home',qty_Property = 'NA' )
WHERE
theGuid = 'a45vz-u300-2bd-4710j-vf09';
这将是 3 次更新中的第 2 次:
UPDATE
bLine
SET
(qty_SerialNum = 'fk469fkh',qty_Location = 'Dock#4',qty_Property = 'NA' )
WHERE
???? = ????;
最后这将是 3 次更新中的第 3 次:
UPDATE
bLine
SET
(qty_SerialNum = 'geww2',qty_Location = 'Dock#1',qty_Property = 'Local' )
WHERE
???? = ????;
所以这里的问题是 - 我如何循环遍历接下来的 X 行 并使用 @val1 中的 2,3,... 值更新该信息(跳过第一个,因为它已经通过 theGUID 保存)?
【问题讨论】:
-
但是您的记录的顺序是什么?您在找到的行之后说 X 行,但您没有解释那些 next 行应该是什么顺序
-
@Steve 的顺序是一样的。它将对应于有多少行需要更新。在主要行(具有 GUID 的行)之后的每一行,它们将始终以相同的顺序排列
-
用更多信息更新了我的 OP
-
也许从您的数据和想要的结果开始...
标签: c# sql sql-server sql-server-2016