2017-09-26 215 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

- 謝謝你們 –