2017-09-26 158 views
1

我试图通过在MySQL中使用子查询来解决下面给出的问题,但找不到解决方案,因为它显示子查询返回多行。mysql:子查询返回多于一行

问题描述:显示雇员的名字与他们的薪水和他们的经理和经理 工资。
显示那些只有经理被聘用的员工。

select w.ename employee, w.SAL woSal, m.ename manager, m.SAL mSal 
from emp w, emp m 
where w.mgr = m.empno and 
(SELECT E1.ENAME 
FROM EMP E1, EMP E2 
WHERE E1.MGR=E2.EMPNO and (E1.hiredate<E2.hiredate)); 
+0

这只是意味着你的子查询需求where子句中的更多条件,以便它返回一行。对于任何进一步的澄清,请不要犹豫,再次问我 –

+1

什么是'mgr'列包含。请添加架构和示例数据 –

回答

2

您不需要子查询 - 只需将条件添加到连接条件。还要注意的是隐含的加入(该from子句中使用多个表)被认为是过时,你可能会更好重写它作为一个显式连接:

SELECT w.ename employee, w.SAL woSal, m.ename manager, m.SAL mSal 
FROM emp w 
JOIN emp m 
WHERE w.mgr = m.empno and w.hiredate < m.hiredate 
+0

- 谢谢你们 –