“子查询返回的值超过1”错误

时间:2013-10-16 14:44:54

标签: sql sql-server

SELECT [schoolname] AS combinationschools, 
       CASE 
         WHEN [schoolname] LIKE '%/%' THEN (SELECT value 
                                            FROM 
         [dbo].[Split]('/', '#6/#9E/#9M')) 
       END          AS schoolname 
FROM   [dbo].[schools]; 

我明智地得到q sql错误 -

  

子查询返回的值超过1。这是不允许的   子查询跟随=,!=,<,< =,>,> =或当子查询用作   表达。

3 个答案:

答案 0 :(得分:3)

那是因为Select value from [dbo].Split返回了多个值。

答案 1 :(得分:1)

使用这样的子查询时,每条记录的结果集中只能有一条记录。显然,你的表Split有多个记录。

使用连接而不是子查询。或者通过将它连接到子查询中的schools表或者仅拉取Max或min记录或在子查询中创建某种where子句以仅获取一条记录来使其成为相关子查询。没有看到表结构和数据很难确切地确定要做什么。

答案 2 :(得分:0)

我认为你的split函数将返回一个表,在给定的示例中你不能单行捕获split函数将返回以下三行,这是不可能在单行中捕获

#6
#9E
#9M 

我认为你应该错过在分裂函数中传递一些变量

请传递Select value from [dbo].Split

中的内容