开发者社区> 问答> 正文

子查询错误返回了多个值

以下是我尝试执行并收到错误的查询。这是原始错误

消息512,级别16,状态1,行36子查询返回的值大于1。当子查询遵循=,!=,<,<=,>,> =或将子查询用作表达式时,不允许这样做。

作为user1@abc.com,我想查看人们直接向我报告的所有记录,以及直接向我下面的人报告的记录。根据数据,我想查看EmployeeID 273、16、274、285、286、275、276、23。

获取> =到user1@abc.com Level的所有记录的目标 。这是表中当前数据的样子。```js select A.ManagerID, A.ManagerEmail, A.Email, A.EmployeeID, A.Title, A.DeptID, A.Level from TOrganization_Hierarchy A where A.ManagerEmail = 'user1@abc.com' and A.Level >= (select B.Level from TOrganization_Hierarchy B where B.ManagerEmail = A.ManagerEmail) ;

大家好,我已经弄清楚了,下面是运行的代码

```js
WITH CTE 
     AS (SELECT OH.employeeid, 
                OH.managerid, 
                OH.email AS EMPEMAIL, 
                1        AS level 
         FROM   TORGANIZATION_HIERARCHY OH 
         WHERE  OH.[email] = user1@abc.com
         UNION ALL 
         SELECT CHIL.employeeid, 
                CHIL.managerid, 
                CHIL.email, 
                level + 1 
         FROM   TORGANIZATION_HIERARCHY CHIL 
                JOIN CTE PARENT 
                  ON CHIL.[managerid] = PARENT.[employeeid]), 
     ANOTHERCTE 
     AS (SELECT   
        T.[email], 
        T.[destination_account], 
        T.[customer_service_rep_code] 
         FROM   [KGFGJK].[DBO].[TRANS] AS T) 
SELECT * 
FROM   ANOTHERCTE 
       INNER JOIN CTE 
               ON CTE.empemail = ANOTHERCTE.[email];

展开
收起
祖安文状元 2020-01-05 14:37:26 456 0
1 条回答
写回答
取消 提交回答
  • 像=, !=, <>, <, <= , >, >=只希望1个值进行比较的比较。 因此,具有多个记录的结果将导致错误。

    但是可以EXISTS为此使用一个。

    ...
    WHERE A.ManagerEmail = 'user1@abc.com'
    AND EXISTS
    (
      SELECT 1
      FROM TOrganization_Hierarchy B
      WHERE B.ManagerEmail = A.ManagerEmail
        AND B.Level <= A.Level
    )
    
    

    顺便说一句,查看数据,与相同的ManagerID匹配可能会更高效。

    ...

    WHERE A.ManagerEmail = 'user1@abc.com'
    AND EXISTS
    (
      SELECT 1
      FROM TOrganization_Hierarchy B
      WHERE B.ManagerID = A.ManagerID
        AND B.Level <= A.Level
    )
    
    2020-01-05 14:37:43
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载