表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...