Sql server 解析包含多列的查询,子查询返回多个值

Sql server 解析包含多列的查询,子查询返回多个值,sql-server,Sql Server,我有一个非常简单的值表: CREATE TABLE multiplication( a SMALLINT, b SMALLINT); INSERT INTO multiplication(a, b) VALUES (1, 2), (2, 4), (3, 3) 当我试图打印结果时 DECLARE @Result INT; SELECT @Result = (SELECT a, b, a * b AS c FROM multiplication) PRINT @Result

我有一个非常简单的值表:

CREATE TABLE multiplication(
        a SMALLINT, b SMALLINT);
INSERT INTO multiplication(a, b)
VALUES (1, 2), (2, 4), (3, 3)
当我试图打印结果时

DECLARE @Result INT;
SELECT @Result = (SELECT a, b, a * b AS c FROM multiplication)
PRINT @Result   
我弄错了

当子查询未引入EXISTS时,只能在选择列表中指定一个表达式

我知道我得到这个错误是因为我试图将两列赋给一个变量。然后我将删除其他列并获取错误

子查询返回了多个值。当子查询在=、!=、=或者当子查询用作表达式时


我也尝试选择顶部,但没有运气。那个么,若包含多列和子查询的查询返回的值超过1,那个么如何才能得到结果呢?

您只是想查看结果吗?然后只需选择值而不将其放入变量:

SELECT a, b, a * b AS c FROM multiplication
如果您真的想将其转换为变量,那么SQLServer有一种特殊的变量类型,称为。声明如下:

declare @Results table (
    a smallint,
    b smallint,
    c smallint
);
然后像插入任何其他类型的表一样插入:

insert @Results
SELECT a, b, a * b AS c FROM multiplication

你只是想看看结果吗?然后只需选择值而不将其放入变量:

SELECT a, b, a * b AS c FROM multiplication
如果您真的想将其转换为变量,那么SQLServer有一种特殊的变量类型,称为。声明如下:

declare @Results table (
    a smallint,
    b smallint,
    c smallint
);
然后像插入任何其他类型的表一样插入:

insert @Results
SELECT a, b, a * b AS c FROM multiplication

不能将结果集(SELECT语句返回的结果)分配给标量值(局部变量)。想想你的目标和你想要达到的目标。目前,您无法执行此分配/打印逻辑。您希望将
@Result
的单个值赋予此代码吗?您不仅尝试分配三个值(
a
b
、和
a*b
),您还尝试分配三次这些值(表中每行一次)。如何将3列、3行选择放入标量变量@Result???“那么,在包含多列和子查询的查询返回多个值的情况下,如何获取结果?”。您可以创建一个表变量而不是标量变量。您不能将resultset(您的SELECT语句返回的结果)分配给标量值(您的局部变量)。请思考您的目标和您试图实现的目标。目前,您无法执行此赋值/打印逻辑。您希望将
@Result
的单个值赋予此代码什么?您不仅仅是尝试分配三个值(
a
b
a*b
)您还尝试分配这些值三次(表中每行分配一次)。如何将3列、3行选择放入标量变量@Result???“那么,在包含多列和子查询的查询返回超过1个值的情况下,如何获得结果?”。您创建了一个表变量,而不是标量变量。