首页 > 解决方案 > 编写查询以显示在 deptno 10 或 30 中没有报告经理的 ename?

问题描述

SQL> SELECT * FROM emp;  


  EMPNO  ENAME  JOB       MGR   HIREDATE   SAL   COMM  DEPTNO  
  7369   SMITH   CLERK     7902  17-DEC-80  2900        20
  7499   ALLEN   SALESMAN  7698  20-FEB-81  3600  300   30
  7521   WARD    SALESMAN  7698  22-FEB-81  3250  500   30
  7566   JONES   MANAGER   7839  02-APR-81  4975        20
  7654   MARTIN  SALESMAN  7698  28-SEP-81  3250  1400  30
  7698   BLAKE   MANAGER   7839  01-MAY-81  4850        30
  7782   CLARK   MANAGER   7839  09-JUN-81  4450        10
  7788   SCOTT   ANALYST   7566  19-APR-87  5000        20
  7839   KING    PRESIDENT       17-NOV-81  7000        10
  7844   TURNER  SALESMAN  7698  08-SEP-81  3500  0     30
  7876   ADAMS   CLERK     7788  23-MAY-87  3100        20
  7900   JAMES   CLERK     7698  03-DEC-81  2950        30
  7902   FORD    ANALYST   7566  03-DEC-81  5000        20
  7934   MILLER  CLERK     7782  23-JAN-82  3300        10  

这是Oracle SQL 中给出的emp 表。

我需要显示部门 10 或 30 中没有报告经理的员工。

标签: sqloracleoracle11g

解决方案


您可以通过左外连接使用自连接,如下所示:

Select ename
from emp e1
left outer join emp e2 on e2.MGR = e1.EMPNO 
where e2.MGR is null AND e1.DEPTNO in (10,30)

推荐阅读