Oracle 中SQL语句的一道题

来源:百度知道 编辑:UC知道 时间:2024/07/01 04:01:33
已知,scott用户的EMP表,查询出没有下属员工的人的名字和他的职位

表内容:(MGR字段就是其上司的编号,其他无用字段日期,工资等省略)
编号 姓名 职务 上司的编号
EMPNO ENAME JOB MGR
----- ---------- --------- ----- -----------
7369 SMITH CLERK 7902
7499 ALLEN SALESMAN 7698
7521 WARD SALESMAN 7698
7566 JONES MANAGER 7839
7654 MARTIN SALESMAN 7698
7698 BLAKE MANAGER 7839
7782 CLARK MANAGER 7839
7788 SCOTT ANALYST 7566
7839 KING PRESIDENT
7844 TURNER SALESMAN 7698
7876 ADAMS CLERK 7788
7900 JAMES CLERK 7698
7902 FORD ANALYST 7566
7934 MILLER CLERK 7782
谢谢给我的思路, 不过,就是查出来的结果是空的什么都没有,郁闷~

给你个思路
具体我也没试
select ename,job form emp where empno not in (select mgr from emp)
可能有点小问题 不过思路应该是这样的,先查出有下属的MGR的编号,然后看员工号在不在里面 不在里面就说明此人没有下属

select scott.ENAME, scott.JOB from scott
where scott.EMPNO not in (select scott.MGR from scott)

SELECT * FROM emp a,emp b WHERE a.empno=b.mgr(+) AND b.empno IS NULL
或者
SELECT * FROM emp WHERE empno NOT IN(SELECT DISTINCT mgr FROM emp WHERE mgr IS NOT NULL)
都能得到结果

看不明白~

select t.ename,t.job from emp t where t.empno not in (select t1.mgr from emp t1)