got*_*tqn 1 t-sql variables initialization sql-server-2012
我有下表(让我们说它的名字是"AnswerTable":
QuestionID Value
100 1
101 2
102 1
103 2
104 1
105 2
...
Run Code Online (Sandbox Code Playgroud)
然后我有几个变量:
DECLARE @Answer1 INT
DECLARE @Answer2 INT
....
Run Code Online (Sandbox Code Playgroud)
我需要从表中检索信息,如下所示:
SET @Answer1 =(SELECT Value FROM AnswerTable WHERE QuestionID=100)
SET @Answer2 =(SELECT Value FROM AnswerTable WHERE QuestionID=101)
...
Run Code Online (Sandbox Code Playgroud)
我想要做的是只用表中的一个select来初始化变量,因为在我的实际情况下,表非常大,并且它与其他表连接,我担心子查询的多次执行不会要有效率.
是否有捷径可寻?
一般来说;
SELECT @Answer1 = col1, @Answer2 = col2, ... FROM yourTable
Run Code Online (Sandbox Code Playgroud)
在你的情况下;
SELECT @Answer1 = case QuestionID when 100 then Value Else @Answer1 End,
@Answer2 = case QuestionID when 101 then Value Else @Answer2 End
FROM AnswerTable
WHERE QuestionID IN (100,101)
Run Code Online (Sandbox Code Playgroud)
例如: Sql小提琴示例