[英]How are these two Oracle queries different?
oracle如何執行這兩個具有不同結果的查詢
1。
SELECT e.ename,
m.ename
FROM emp e,
emp m
WHERE e.empno = m.mgr;
2。
SELECT e.ename,
m.ename
FROM emp e,
emp m
WHERE m.empno = e.mgr; /*<-- Different*/
沒有得到明確的結果...
謝謝大家。
第一個查詢顯示經理及其員工,例如BLAKE是5名員工的經理。 第二個顯示雇員及其經理,因此BLAKE在第二列中出現了五次。
我認為可以將它們寫得更清楚,例如:
-- Managers and their employees:
select m.ename as manager
, e.ename as employee
from emp m
join emp e on e.mgr = m.empno
order by 1,2;
MANAGER EMPLOYEE
---------- ----------
BLAKE ALLEN
BLAKE JAMES
BLAKE MARTIN
BLAKE TURNER
BLAKE WARD
CLARK MILLER
FORD SMITH
JONES FORD
JONES SCOTT
KING BLAKE
KING CLARK
KING JONES
SCOTT ADAMS
13 rows selected
-- Employees and their managers:
select e.ename as employee
, m.ename as manager
from emp e
join emp m on m.empno = e.mgr
order by 1,2;
EMPLOYEE MANAGER
---------- ----------
ADAMS SCOTT
ALLEN BLAKE
BLAKE KING
CLARK KING
FORD JONES
JAMES BLAKE
JONES KING
MARTIN BLAKE
MILLER CLARK
SCOTT JONES
SMITH FORD
TURNER BLAKE
WARD BLAKE
13 rows selected
這是兩個不同的查詢:
第一個列出了雇員(左)和他們的經理(右)。
第二個列出了經理(左)和員工(右)。
您需要決定要哪個。
另外,在連接兩個表時,您應該真正使用JOIN
關鍵字(現在不再是90年代了)。 您的第一個查詢將如下所示:
SELECT e.ename,
m.ename
FROM emp e
JOIN emp m on e.empno = m.mgr;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.