Oracle多表連接查詢Join


Left join 和right join 為外部連接,inner join 為內部連接

Left join 左側為主表,右側為從表,主表會顯示出所有數據,從表則只顯示關聯到的數據,不滿足連接條件 的行數據用NULL補全

right join 右側為主表,左側為從表,主表會顯示出所有數據,從表則只顯示關聯到的數據,不滿足連接條件 的行數據用NULL補全

inner join 則只顯示2張表關聯條件相匹配的數據

(1)dept(部門表)

(2)emp(雇員表)

1、inner join

     語法:select a.x from a inner join b on a.id=b.id;

     inner 可以省略.

實例:

select a.empno as 員工編號, a.ename as 員工名稱, b.dname as 部門
  from scott.emp a  join  scott.dept b
 on a.deptno = b.deptno ;

 結果:

3、left outer join

查詢結果除了返回包含連接條件的行,還包含a表中不滿足條件的行。其中不滿足的條件行中B表的字段將被置空

 語法: select a.x form a left outer join a on a.id=b.id   outer可以省略

實例:

 select a.empno as 員工編號, a.ename as 員工名稱, b.dname as 部門
  from scott.emp a left outer join  scott.dept b
 on a.deptno = b.deptno

結果:

當查詢中出現過濾條件時:

1)當連接條件后面有where條件時:

 select a.empno as 員工編號, a.ename as 員工名稱, b.dname as 部門
  from scott.emp a left outer join  scott.dept b
 on a.deptno = b.deptno where b.dname like 'SALES'

解釋:先根據連接條件a.deptno = b.deptno查詢,再對查詢結果按過濾條件查詢。

結果:

2)當連接條件后面有and條件時:

 select a.empno as 員工編號, a.ename as 員工名稱, b.dname as 部門
  from scott.emp a left outer join  scott.dept b
 on (a.deptno = b.deptno and b.dname like 'SALES')

解釋:先對b表按過濾條件查詢,再對結果執行左連接查詢。

結果:

 

3 、right outer join 

查詢結果除了返回包含連接條件的行,還包含右表(b)中不滿足連接條件的行,

其中不滿足連接條件的行中a表的字段值將被置為空。

語法:select a.x from a right join a on a.id=b.id

outer 可以省略.

參考文檔:https://www.cnblogs.com/dog2016/p/7402019.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM