从select语句分配变量

问题描述:

有人可以告诉我。从select语句分配变量

哪个是正确的语法?

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

OR

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

难道它甚至关系呢?

+0

看到这个帖子设置VS选择:http://stackoverflow.com/questions/3945361/tsql-set-vs-select-when-assigning-variables – jrara 2011-06-06 09:33:02

Difference between set vs select

  1. SET为变量赋值ANSI标准,SELECT不是。
  2. SET一次只能分配一个变量,SELECT可以一次做多个赋值。
  3. 如果从查询分配,SET只能分配一个标量值。如果查询返回多个值/行,则SET将引发错误。 SELECT会将其中一个值分配给变量,并隐藏返回多个值的事实(因此您可能永远不会知道为什么某处出错了) -
  4. 从查询中分配时是否存在是没有值返回然后SET将分配NULL,其中SELECT不会完成任务(因此变量将不会从其以前的值更改)
  5. 就速度差异 - SET和SELECT之间没有直接差异。然而,SELECT在一次拍摄中进行多个分配的能力确实比SET有稍微的速度优势。
+3

[你是不是应该给归属?](HTTP: //ryanfarley.com/blog/archive/2004/03/01/390.aspx) – 2011-06-06 05:56:52

+0

@Martin - 对不起,我把链接放在那里,但不知何故它被删除,现在我又恢复了它.... – 2011-06-07 04:13:13