首页 文章

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

提问于
浏览
0
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

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

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

  • 3

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

  • 1

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

    #6
    #9E
    #9M
    

    我认为你应该缺少在split函数中传递一些变量

    请在 Select value from [dbo].Split 传递一些东西

相关问题