Oracle的外連接join以及on條件裏面add和where後面的add區別

     外連接返回的結果,除了包含滿足連接條件的記錄,還包括不滿足連接條件。
舉個栗子:
     在Oracle中自帶的SCOTT用戶表中,DEPT部門表有部門編號40的部門,EMP員工沒有40部門的員工。

select * from emp e right join dept d on e.deptno=d.deptno;
右表:dept |左表:emp

     該右連接查詢語句,會保證右表的數據都顯示(即使不滿足 e.deptno=d.deptno條件的數據),左表不滿足條件的列顯示null。
在這裏插入圖片描述

select * from dept d right join emp e on d.deptno=e.deptno;
右表:emp |左表:dept
該右查詢保證右表數據都會顯示,所以不會顯示部門40的信息
//----------------------------------------------------------------------------//
select * from dept d left join emp e on d.deptno=e.deptno;
右表:emp |左表:dept

     上述左連接查詢語句,會保證左表的數據都顯示(即使不滿足 e.deptno=d.deptno條件的數據),右表不滿足條件的列顯示null。
在這裏插入圖片描述

on條件裏面add和where後面的add區別:

     左連接:顯示右表滿足on連接條件的數據,所以on裏面的add作爲限制條件,限制右表顯示的數據,不滿足的列顯示null。
     右連接:顯示左表滿足on連接條件的數據,所以on裏面的add作爲限制條件,限制左表顯示的數據,不滿足的列顯示null。

select * from dept d left join emp e on (d.deptno=e.deptno and d.DNAME=‘SALES’)
在這裏插入圖片描述

     where作爲指定查詢條件,它的存在會讓左連接或右連接都無效,只顯示滿足where查詢條件的數據。
     以下查詢結果一致:在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章