Sql server 使用计数的sql集合变量
我试图对我的服务器进行一个简单的查询,并希望结果存储在变量@times中Sql server 使用计数的sql集合变量,sql-server,tsql,Sql Server,Tsql,我试图对我的服务器进行一个简单的查询,并希望结果存储在变量@times中 DECLARE @times int SET @times = SELECT COUNT(DidWin)as "I Win" FROM thetable WHERE DidWin = 1 AND Playername='Me' IntelliSense表示Select附近的语法错误您可以直接选择变量,而不是使用set: DECLARE @times int SELECT @times = COUNT(DidWin)
DECLARE @times int
SET @times = SELECT COUNT(DidWin)as "I Win"
FROM thetable
WHERE DidWin = 1 AND Playername='Me'
IntelliSense表示Select附近的
语法错误
您可以直接选择变量,而不是使用set:
DECLARE @times int
SELECT @times = COUNT(DidWin)
FROM thetable
WHERE DidWin = 1 AND Playername='Me'
如果需要设置多个变量,可以从同一个选择中进行设置(例如有点做作):
如果您偏爱使用set,则可以使用括号:
DECLARE @wins int, @losses int
SET (@wins, @losses) = (SELECT SUM(DidWin), SUM(DidLose)
FROM thetable
WHERE Playername='Me');
SET @times = (SELECT COUNT(DidWin)as "I Win"
FROM thetable
WHERE DidWin = 1 AND Playername='Me');
你想要:
DECLARE @times int
SELECT @times = COUNT(DidWin)
FROM thetable
WHERE DidWin = 1 AND Playername='Me'
您也不需要“as”子句。您只需要在select(选择)语句周围加上括号:
SET @times = (SELECT COUNT(DidWin) FROM ...)
或者你可以这样做:
SELECT @times = COUNT(DidWin) FROM ...
您可以使用
SELECT
作为lambacksaid
或添加括号:
DECLARE @wins int, @losses int
SET (@wins, @losses) = (SELECT SUM(DidWin), SUM(DidLose)
FROM thetable
WHERE Playername='Me');
SET @times = (SELECT COUNT(DidWin)as "I Win"
FROM thetable
WHERE DidWin = 1 AND Playername='Me');
如果需要打印列名为“c”的结果,或使用“c”列名在代码中读取结果:
DECLARE @c int;
SELECT c = count(*) from '%Table%' WHERE '%condition%'
您可以,但不需要直接在变量中进行选择。@ypercube:但是如果您养成了使用选择的习惯,当一个选择可以同时设置所有变量时,您就不会尝试使用两个或更多的set+select命令。我还发现SELECT更具可读性。我不同意可读性,但这是我个人的品味。对我来说,可读性应该是
SET(@var1,@var2,…,@varn)=(SELECT…
我喜欢赋值接近变量名。如果有许多赋值,则很难选择select中的哪个项应用于哪个变量。更不用说你会有更多的代码。这不会将结果分配给变量。它将返回一个名为c的列的结果集。变量@c将为null。并且不能在单个语句中赋值和返回。