从表中设置变量

Gav*_*vin 6 sql-server

如果我想将变量设置为表中的字段,我通常使用类似的东西

SELECT @UserIdToUpdate = userId FROM #NewUsers
Run Code Online (Sandbox Code Playgroud)

在这种情况下会有多个结果,我只想要第一个,所以我尝试了这个,但它失败了,并说无效的语法顶部

SELECT @UserIdToUpdate = TOP 1 UserId FROM #NewUsers
Run Code Online (Sandbox Code Playgroud)

如果是这种情况,我可以使用没有顶部的第一个例子吗?我想它只会拿第一张唱片?我知道这似乎是奇怪的事情,但命令是在循环中所以它将选择一个记录,用它做一些事情,删除它然后选择下一个.

Chr*_*ter 15

SELECT @UserIdToUpdate = NULL
SELECT TOP 1 @UserIdToUpdate = userId FROM #NewUsers
Run Code Online (Sandbox Code Playgroud)

第一个语句是必需的,因为如果第二个语句找到零行,那么该变量根本不会被赋值,并将保留其先前值.

或者,

SELECT @UserIdToUpdate = (SELECT TOP 1 userId FROM #NewUsers)
Run Code Online (Sandbox Code Playgroud)

即使找到零行也会有效.