【问题标题】:subquery is returning multiple rows without operators子查询返回多行没有运算符
【发布时间】:2019-06-11 04:52:59
【问题描述】:

我有这个 SQL 查询

SELECT LEFT(ORIGINALPATH, 34), count(originalpath) as docType1,
(SELECT count(originalpath)
FROM   docType2 
WHERE  ORIGINALPATH LIKE 'D:\era-server\16\ibosdata\00001\%' 
GROUP  BY LEFT(ORIGINALPATH, 34)) AS [dcoType2]
FROM   docType1
WHERE  ORIGINALPATH LIKE 'D:\era-server\16\ibosdata\00001\%' 
GROUP  BY LEFT(ORIGINALPATH, 34) 
ORDER  BY LEFT(ORIGINALPATH, 34);

但我收到以下错误

子查询返回超过 1 个值。这是不允许的,当 子查询遵循 =、!=、、>= 或当子查询用作 一个表达式。

尽管我没有使用这样的运算符。请帮忙。

【问题讨论】:

    标签: sql sql-server tsql subquery


    【解决方案1】:

    您可以删除内部组并尝试一下。可能 group by 可能会在子查询中创建多行。已编辑:添加了一个条件以确保分组依据是根据相同的分组元素。

    SELECT LEFT(ORIGINALPATH, 34), count(originalpath) as docType1,
    (SELECT count(originalpath)
    FROM   docType2 de
    WHERE  ORIGINALPATH LIKE 'D:\era-server\16\ibosdata\00001\%' 
    and LEFT(de.ORIGINALPATH, 34) = LEFT(d1.ORIGINALPATH, 34)
    GROUP  BY LEFT(ORIGINALPATH, 34)) AS [dcoType2]
    FROM   docType1 d1
    WHERE  ORIGINALPATH LIKE 'D:\era-server\16\ibosdata\00001\%' 
    GROUP  BY LEFT(ORIGINALPATH, 34) 
    ORDER  BY LEFT(ORIGINALPATH, 34);
    

    【讨论】:

      猜你喜欢
      • 2016-08-24
      • 1970-01-01
      • 1970-01-01
      • 2014-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多