我试图做一个简单的查询到我的服务器,并希望结果集中变量存储在变量@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