【发布时间】:2017-06-21 00:13:05
【问题描述】:
我基本上是在尝试将查询的输出存储在一个变量中,但收到错误消息
子查询返回超过 1 个值。当子查询跟随 =、!=、、>= 或子查询用作表达式时,这是不允许的。
--DECLARE @companystring varchar(max)= '867343,867358,867443,867458,867543'
DECLARE @companystring varchar(max)
set @companystring = (SELECT DISTINCT Top 1000(mc.companyId) FROM ciqMarketCap mc
JOIN ciqCompany c ON c.companyid = mc.companyid
WHERE c.companyStatusTypeId NOT IN (5,6) AND c.companyTypeId IN (1,4))
select
ci.id
into #companyId
from dbo.splitstring(@companystring) ci
谁能告诉我是什么问题?
【问题讨论】:
-
您的查询甚至没有假装尝试返回单行。我不知道你真正想做什么,但我想到了一个临时表。
-
好吧,您的子查询返回 1000 行,并且您只能在子查询中返回 1(因此不允许在子查询中返回超过 1 个值的错误)。您实际上是在尝试将 1000 条记录填充到 1 个字符串中吗?
-
基本上我想要做的是替代我更新帖子中评论的声明声明。我需要存储在该变量中的 1000 个公司 ID
-
嗯,问题是您不能将多行结果集插入到标量变量中。 Table variables exist 支持将结果集保存到变量中,但是 a)它们与临时表几乎相同,并且 b)您立即将变量转储到临时表中。
标签: mysql sql sql-server