Sql 在一个SELECT语句中设置两个标量变量?

Sql 在一个SELECT语句中设置两个标量变量?,sql,sql-server,tsql,Sql,Sql Server,Tsql,我想这样做: 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 UserI

我想这样做:

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
但这需要两倍的时间。最快的方法是什么?

这样做:

DECLARE @a int;
DECLARE @b int;

SELECT @a = StartNum, @b = EndNum 
FROM Users 
WHERE UserId = '1223'
Declare @a int;
Declare @b int;

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

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

如果您在存储过程中执行此操作,并且不希望在输出结果集中显示select的结果,则需要使用INTO这个词

Declare @a int;
Declare @b int;

SELECT StartNum, EndNum 
FROM Users 
Where UserId = '1223'
INTO @a, @b;
它也可以这样使用:

Declare @a int;
Declare @b int;

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

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

很好,谢谢。我在计算SQL的语法时遇到了麻烦。有很多关键字和结构可以以各种意想不到的方式使用。@aF。对不起!当12分钟的接受限制达到时,我分心了,忘了回去检查。我在SQL Server DB上尝试了这里描述的两种方法,但都不起作用。这只是对任何尝试这种方式的人的一个警告。@EthanConner我发布这篇文章已经很长时间了,但它过去是有效的,将值存储在变量中,以便在存储过程的后面部分使用,而不将它们推送到输出,您是否遇到任何特定错误?“接近“into”的无效语法”或类似的内容。SQL Server不允许我使用这种格式,但“select@a=column\u a”格式运行良好