Установка двух скалярных переменных в одном операторе SELECT? - PullRequest
39 голосов
/ 03 февраля 2012

Я хочу сделать это:

Declare @a int;
Declare @b int;

SET @a,@b = (SELECT StartNum,EndNum FROM Users Where UserId = '1223')

PRINT @a
PRINT @b

Но это неверный синтаксис. Как мне установить несколько скалярных переменных в одном операторе select? Я могу сделать:

Declare @a int;
Declare @b int;

SET @a = (SELECT StartNum FROM Users Where UserId = '1223')
SET @b = (SELECT EndNum FROM Users Where UserId = '1223')

PRINT @a
PRINT @b

Но это займет вдвое больше времени. Какой самый быстрый способ?

Ответы [ 3 ]

91 голосов
/ 03 февраля 2012
DECLARE @a int;
DECLARE @b int;

SELECT @a = StartNum, @b = EndNum 
FROM Users 
WHERE UserId = '1223'
12 голосов
/ 03 февраля 2012

Сделай так:

Declare @a int;
Declare @b int;

SELECT @a=StartNum,@b=EndNum FROM Users Where UserId = '1223'

PRINT @a
PRINT @b
3 голосов
/ 01 октября 2016

Если вы делаете это в хранимой процедуре и не хотите получать результат выбора в выходном наборе результатов, вам нужно будет использовать слово INTO.

Declare @a int;
Declare @b int;

SELECT StartNum, EndNum 
FROM Users 
Where UserId = '1223'
INTO @a, @b;

Это также можно использовать какэто:

SELECT StartNum, EndNum 
INTO @a, @b
FROM Users 
Where UserId = '1223';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...