1

私は次のテーブルを持っています (その名前が「AnswerTable」であるとしましょう:

QuestionID Value
100        1
101        2
102        1
103        2
104        1
105        2
...

次に、いくつかの変数があります。

DECLARE @Answer1 INT
DECLARE @Answer2 INT
....

次のようにテーブルから情報を取得する必要があります。

SET @Answer1 =(SELECT Value FROM AnswerTable WHERE QuestionID=100)
SET @Answer2 =(SELECT Value FROM AnswerTable WHERE QuestionID=101)
...

そして、私がやりたいことは、テーブルから1つだけ選択して変数を初期化することです。実際の状況では、テーブルが非常に大きく、他のテーブルと結合されており、サブクエリの複数回の実行が行われていないことが懸念されます効率的であること。

これを行う簡単な方法はありますか?

4

2 に答える 2

5

一般に;

SELECT @Answer1 = col1, @Answer2 = col2, ... FROM yourTable

あなたの場合;

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)

例: SQL フィドルの例

于 2012-12-19T12:52:29.727 に答える
0

少し厄介ですが、結合を使用してこれを行うことができます。

http://sqlfiddle.com/#!3/e3fe7/4

DECLARE @Answer1 INT
DECLARE @Answer2 INT

SELECT 
  @Answer1 = Question100.Value, 
  @Answer2 = Question101.Value 
FROM 
  AnswerTable AS Question100 
INNER JOIN AnswerTable AS Question101 
  ON Question101.QuestionId = 101 
WHERE Question100.QuestionID=100


select @Answer1, @Answer2
于 2012-12-19T12:54:19.390 に答える