oracle中的內連線和外連線區別

2021-09-06 13:23:04 字數 2147 閱讀 2554

表t_user1,t_user2,t_user3,各有id,name兩列

idname

110a

220a id

name

110b

330b id

name

110c

440c

連線分為兩種:內連線與外連線。

內連線,即最常見的等值連線,例:

select * 

from t_user1,t_user2

where t_user1.id = t_user2.id

結果

idname

idname

110a

110b

外連線分為左外連線,右外連線和全外連線。

1. 左外連線 left outer join 或者 left join

左外連線就是在等值連線的基礎上加上主表中的未匹配資料,例:

select *

from t_user1

left outer join t_user2

on t_user1.id = t_user2.id

oracle 支援另一種寫法

select *

from t_user1 ,t_user2

where t_user1.id=t_user2.id(+)

結果:

idname

idname

110a

110b

220a

三個表做左外連線

select *

from t_user1

left outer join t_user2

on t_user1.id=t_user2.id

left outer join t_user3

on t_user1.id=t_user3.id

oracle 支援的另外一種寫法

select *

from t_user1,t_user2,t_user3

where t_user1.id=t_user2.id(+)

and t_user1.id=t_user3.id(+)

結果:

idname

idname

idname

110a

110b

110c

220a

2. 右外連線 right outer join 或者 right join

右外連線是在等值連線的基礎上加上被連線表的不匹配資料

select *

from t_user1

right outer join t_user2

on t_user1.id=t_user2.id

oracle支援的另一種寫法

select *

from t_user1,t_user2

where t_user1.id(+)=t_user2.id

結果:

idname

idname

110a

110b

330b

全外連線是在等值連線的基礎上將左表和右表的未匹配資料都加上

select * 

from t_user1

full outer join t_user2

on t_user1.id=t_user2.id

全外連線的等價寫法,對同一表先做左連線,然後右連線

select t_user1.*,t_user2.*

from t_user1

left outer join t_user2

on t_user1.id = t_user2.id

union

select t_user1.*,t_user2.*

from t_user2

left outer join t_user1

on t_user1.id = t_user2.id

結果:

idname

idname

110a

110b

220a

330b

oracle內連線 外連線

表testa,testb,testc,各有a,b兩列 a b001 10a002 20a a b 001 10b 003 30b a b001 10c004 40c 連線分為兩種 內連線與外連線。a 內連線 內連線,即最常見的等值連線,例 select fromtesta,testb wherete...

Oracle 內連線,外連線

誰能詳細解釋一下oracle的內連線和外連線。一般的相等連線 select from a,b where a.id b.id 這個就屬於內連線。對於外連線 oracle中可以使用 來表示,9i可以使用left right full outer join left outer join 左外關聯 se...

oracle表內連線和外連線

表內連線和外連線 select from emp a,emp b where a.empno b.mgr order by a.empno 聯絡 查詢king手下是誰 內連線 select emp.empno,emp.ename,dept.dname from emp inner join dept...