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

我猜的啊 :PP
可能是因为7839没有上级导致的,如果7839有上级的话       
select m.hiredate from emp m where e.empno=m.mgr
select m.hiredate from emp m where m.empno=e.mgr
这两个语句应该是一样的
页: [1]
查看完整版本: 跪求指导!!