有一个程序,首先我想在屏幕上显示Minimun Que编号(C#)它的工作情况,它显示501作为最小阙编号然后更新,因为我在下面写下来,但它的更新ID 501和502在同一时间时间... (选择id值并更新id行所具有的字段之一)
有更好的方法吗?
Create procedure [dbo].[nmr_sp_srd]
(
@opid int
)
AS
Begin
Begin Transaction
select Min(Que) from nmr_tbl_srbklynlr where turId=@opid and actpf=1
UPDATE nmr_tbl_srbklynlr
SET actpf= 0
Where Que=(select Min(Que) from nmr_tbl_srbklynlr where turId=@opid and actpf=1)
Commit Transaction
End
答案 0 :(得分:2)
您可以通过将值存储在变量中来避免双重查询。如果要在与where
子句匹配的所有行中最多更新一行,则可以使用update top (1)
。
declare @min_que int
select @min_que = Min(Que)
from nmr_tbl_srbklynlr
where turId = @opid and actpf = 1
update top (1) nmr_tbl_srbklynlr
set actpf = 0
where Que = @min_que
select @min_que