Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在SQL子查询中选择多个值_Sql_Sql Server_Tsql - Fatal编程技术网

如何在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