簡體   English   中英

這兩個Oracle查詢有何不同?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM