从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
难道它甚至关系呢?
答
Difference between set vs select
- SET为变量赋值ANSI标准,SELECT不是。
- SET一次只能分配一个变量,SELECT可以一次做多个赋值。
- 如果从查询分配,SET只能分配一个标量值。如果查询返回多个值/行,则SET将引发错误。 SELECT会将其中一个值分配给变量,并隐藏返回多个值的事实(因此您可能永远不会知道为什么某处出错了) -
- 从查询中分配时是否存在是没有值返回然后SET将分配NULL,其中SELECT不会完成任务(因此变量将不会从其以前的值更改)
- 就速度差异 - 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
看到这个帖子设置VS选择:http://stackoverflow.com/questions/3945361/tsql-set-vs-select-when-assigning-variables – jrara 2011-06-06 09:33:02