从select语句中分配变量

4
哪种是正确的语法?
DECLARE @TotalRows INT
SET @TotalRows = (SELECT COUNT(*) FROM MyTable WHERE MyID = Value)

或者

DECLARE @TotalRows INT
SELECT @TotalRows = COUNT(*) FROM MyTable WHERE MyID = Value

这真的很重要吗?


请查看此帖子:set vs select: https://dev59.com/02865IYBdhLWcg3wLber - jrara
1个回答

3

SET和SELECT的区别

  1. SET是变量赋值的ANSI标准,而SELECT不是。
  2. SET一次只能赋值一个变量,而SELECT可以一次性进行多个赋值。
  3. 如果从查询中进行赋值,SET只能分配一个标量值。如果查询返回多个值/行,则SET会引发错误。SELECT将向变量分配其中一个值,并隐藏返回多个值的事实(因此您可能永远不知道其他地方出了什么问题 - 祝您调试愉快)
  4. 当从查询中进行赋值时,如果没有返回值,则SET将分配NULL,而SELECT根本不会进行赋值(因此变量不会从其先前的值更改)
  5. 就速度差异而言 - SET和SELECT之间没有直接差异。但是,SELECT一次性进行多个赋值的能力确实使它比SET略快。

3
你不应该提供归属说明吗? - Martin Smith
@Martin - 抱歉我把链接放在那里,但不知何故它现在被删除了,现在我已经恢复了它... - Pranay Rana

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接