2011-06-06 85 views
4

有人可以告訴我。從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

回答

3

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