如何在SQL子查询中选择多个值
我正在尝试运行下面的查询,但收到一个错误,内容如下: 子查询返回了多个值。当子查询在=、!=、=或者当子查询用作表达式时如何在SQL子查询中选择多个值,sql,sql-server,tsql,Sql,Sql Server,Tsql,我正在尝试运行下面的查询,但收到一个错误,内容如下: 子查询返回了多个值。当子查询在=、!=、=或者当子查询用作表达式时 看起来您在单个变量中存储了更多的值,在这种情况下,我建议您将所有结果存储到一个带有标识列的临时表中,然后使用where ID=@count获得单个结果。比如说 create #Temp(id int identity, SchoolType varchar(20)) INSERT INTO #temp SELECT School_Type FROM crm_portal_a
看起来您在单个变量中存储了更多的值,在这种情况下,我建议您将所有结果存储到一个带有标识列的临时表中,然后使用where ID=@count获得单个结果。比如说
create #Temp(id int identity, SchoolType varchar(20))
INSERT INTO #temp
SELECT School_Type FROM crm_portal_announcements_messages where id > 0 group by id, School_Type
DECLARE @DELIMITER varchar(1)
DECLARE @Count INT = 1
DECLARE @School VARCHAR(20)
DECLARE @SchoolType VARCHAR(20)
WHILE @COUNT <= (SELECT COUNT(*) FROM #temp)
BEGIN
select @SchoolType = SchoolType FROM #temp WHERE id = @Count
SELECT @School = Item FROM SplitString(@SchoolType, @delimiter) group by item
print @School
PRINT 'The counter value is = ' + CONVERT(VARCHAR,@School)
SET @Count = @Count + 1
END
错误是告诉你这里的问题;您不理解的错误是什么,我们可以试着详细说明。您不理解错误的哪一部分?这个错误和子查询的问题看起来都很清楚。也许你也应该用样本数据和期望的结果来描述你正在尝试做的事情。我不知道如何让它返回多个值我不知道如何让它返回多个值你为什么要这样做@SchoolType是一个标量变量;它不能包含多个值。你到底想在这里实现什么?您试图为一个标量变量分配多个值,并且有一段时间,这表明了几个设计缺陷。如其他注释中所述,错误消息告诉您问题:不允许返回多个值。没有解决办法。
create #Temp(id int identity, SchoolType varchar(20))
INSERT INTO #temp
SELECT School_Type FROM crm_portal_announcements_messages where id > 0 group by id, School_Type
DECLARE @DELIMITER varchar(1)
DECLARE @Count INT = 1
DECLARE @School VARCHAR(20)
DECLARE @SchoolType VARCHAR(20)
WHILE @COUNT <= (SELECT COUNT(*) FROM #temp)
BEGIN
select @SchoolType = SchoolType FROM #temp WHERE id = @Count
SELECT @School = Item FROM SplitString(@SchoolType, @delimiter) group by item
print @School
PRINT 'The counter value is = ' + CONVERT(VARCHAR,@School)
SET @Count = @Count + 1
END