我試圖做一個簡單的查詢到我的服務器,並希望結果集中變量存儲在變量@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
我試圖做一個簡單的查詢到我的服務器,並希望結果集中變量存儲在變量@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
你只需要括號圍繞你的選擇:
SET @times = (SELECT COUNT(DidWin) FROM ...)
或者你也可以做這樣的:
SELECT @times = COUNT(DidWin) FROM ...
可以直接選擇到變量,而不是使用集:
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');
你想:
DECLARE @times int
SELECT @times = COUNT(DidWin)
FROM thetable
WHERE DidWin = 1 AND Playername='Me'
你也不需要 '爲' 條款。
您可以使用SELECT
爲lambacck說 或加括號:
SET @times = (SELECT COUNT(DidWin)as "I Win"
FROM thetable
WHERE DidWin = 1 AND Playername='Me');
你可以,但喲你不需要**直接選擇變量。 – 2011-05-22 14:23:11
@ypercube:但是,如果你在使用選擇的習慣得到的,你不會嘗試使用2個或更多套+選擇命令時,1可以選擇一次性設置所有的變量。我也發現SELECT更具可讀性。 – lambacck 2011-05-22 14:25:26
我不同意可讀性,但這是個人的品味。讀我將'SET(@ VAR1,@ VAR2,...,@varn)=(SELECT ...)' – 2011-05-22 14:28:32