Oracle中Left Outer Join和外關聯(+)的區別

來源:互聯網
上載者:User

標籤:

外關聯是Oracle資料庫的專有語句

Left Outer Join則是SQL-92的標準語句

通常認為這兩個SQL是可以等效的,但還是有些細微的差別。

一般說來,外關聯的等值條件等效於Left Outer Join中的on語句;兩個where中其他語句是一樣的。

但是Left Outer Join中的其他條件(非表串連)出現在On關鍵詞後面還是出現在Where關鍵詞後面是不一樣的,這樣的語句很難用外關聯進行同義轉義。

 

下面我們先看一個測試資料,和一個測試案例

建立一個部門表和員工表

CREATE TABLE departments( depID  NUMBER(38,0), depName VARCHAR2(20), delFlag NUMBER(1,0)); CREATE TABLE employees( empID  NUMBER(38,0), empName VARCHAR2(20), depID  NUMBER(38,0), delFlag NUMBER(1,0)); INSERT INTO departments VALUES(1,‘Finacle‘,0);INSERT INTO departments VALUES(2,‘Marketing‘,0);INSERT INTO departments VALUES(3,‘HR‘,1);INSERT INTO departments VALUES(4,‘IT‘,0); INSERT INTO employees VALUES(1,‘wbq‘,1,0);INSERT INTO employees VALUES(2,‘czh‘,2,0);INSERT INTO employees VALUES(3,‘chh‘,1,0);INSERT INTO employees VALUES(4,‘wal‘,2,0);INSERT INTO employees VALUES(5,‘ddd‘,3,0); COMMIT;

 以下為測試例子

--列出部門ID為3的部門和員工資訊,不管該部門是否有員工SELECT d.depID,d.depName,e.empName FROM departments d LEFT OUTER JOIN employees e   ON d.depID = e.depID WHERE d.depID =3 ORDER BY d.depID;--和上面等效SELECT d.depID,d.depName,e.empName FROM departments d, employees e WHERE d.depID = e.depID(+)  AND d.depID =3 ORDER BY d.depID; --該例子可能不是很恰當,d.depID=3表示首先進行全左串連,然後尋找depID=3的紀錄,如果該部門中找不到對應的員工,則該部門員工則為NULL,同時都顯示部門資訊。SELECT d.depID,d.depName,e.empName,d.delflag FROM departments d LEFT OUTER JOIN employees e   ON d.depID = e.depID AND e.depID=3 ORDER BY d.depID;--和上面不等價,差別在於能夠找到無對應員工的部門和有對應員工的部門,卻找不到該部門無員工的部門。SELECT d.depID,d.depName,e.empName,d.delflag FROM departments d, employees e WHERE d.depID = e.depID(+)  AND (e.depID=3 or e.depID is NULL) ORDER BY d.depID;

  

Oracle中Left Outer Join和外關聯(+)的區別

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.