Chinaunix

标题: 跪求指导!! [打印本页]

作者: a65751844    时间: 2012-04-18 16:20
标题: 跪求指导!!


题目:列出入职日期早于其直接上级的所有雇员
错误:select ename from emp e where hiredate<(select hiredate from emp where e.empno=mgr);
select ename from emp e where hiredate<(select hiredate from emp where e.empno=mgr)
                                                             *
ERROR at line 1:
ORA-01427: single-row subquery returns more than one row


正确:select ename from emp e where hiredate<(select hiredate from emp where empno=e.mgr);
第一条是我自己写的,为什么会报错呢,我不明白,有大侠能给解释一下吗,跪谢

作者: duolanshizhe    时间: 2012-04-18 17:14
不是已经有了很明确的提示么  单行子查询返回多余一行


作者: a65751844    时间: 2012-04-18 17:25
我的意思是
select hiredate from emp where e.empno=mgr
select hiredate from emp where empno=e.mgr
这两个有区别吗?都是找empno=mgr,第一个是从外面的emp中empno=子查询肿的mgr,第二个是子查询中的empno=外面的emp a中的mgr是吗?这有什么区别吗为什么会单行子查询返回多余一行这样?
作者: 宁城洛神    时间: 2012-04-18 21:53
我猜的啊
可能是因为7839没有上级导致的,如果7839有上级的话         
select m.hiredate from emp m where e.empno=m.mgr
select m.hiredate from emp m where m.empno=e.mgr
这两个语句应该是一样的




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2