2011-05-22 58 views
30

我試圖做一個簡單的查詢到我的服務器,並希望結果集中變量存儲在變量@times。SQL中使用COUNT

DECLARE @times int 

SET @times = SELECT COUNT(DidWin)as "I Win" 
FROM thetable 
WHERE DidWin = 1 AND Playername='Me' 

智能感知說Wrong syntax near Select

回答

66

你只需要括號圍繞你的選擇:

SET @times = (SELECT COUNT(DidWin) FROM ...) 

或者你也可以做這樣的:

SELECT @times = COUNT(DidWin) FROM ... 
8

可以直接選擇到變量,而不是使用集:

DECLARE @times int 

SELECT @times = COUNT(DidWin) 
FROM thetable 
WHERE DidWin = 1 AND Playername='Me' 

如果需要設置多個變量,你可以從相同的選擇(例如做有點做作):

DECLARE @wins int, @losses int 

SELECT @wins = SUM(DidWin), @losses = SUM(DidLose) 
FROM thetable 
WHERE Playername='Me' 

如果你偏愛使用set,您可以使用括號:

DECLARE @wins int, @losses int 

SET (@wins, @losses) = (SELECT SUM(DidWin), SUM(DidLose) 
FROM thetable 
WHERE Playername='Me'); 
+0

你可以,但喲你不需要**直接選擇變量。 – 2011-05-22 14:23:11

+0

@ypercube:但是,如果你在使用選擇的習慣得到的,你不會嘗試使用2個或更多套+選擇命令時,1可以選擇一次性設置所有的變量。我也發現SELECT更具可讀性。 – lambacck 2011-05-22 14:25:26

+0

我不同意可讀性,但這是個人的品味。讀我將'SET(@ VAR1,@ VAR2,...,@varn)=(SELECT ...)' – 2011-05-22 14:28:32

1

你想:

DECLARE @times int 

SELECT @times = COUNT(DidWin) 
FROM thetable 
WHERE DidWin = 1 AND Playername='Me' 

你也不需要 '爲' 條款。

0

您可以使用SELECTlambacck說 或加括號:

SET @times = (SELECT COUNT(DidWin)as "I Win" 
FROM thetable 
WHERE DidWin = 1 AND Playername='Me');