表t_user1,t_user2,t_user3,各有id,name兩列
idname 1
10a 2
20a
id name 1
10b 3
30b
id name 1
10c 4
40c連線分為兩種:內連線與外連線。
a.內連線
內連線,即最常見的等值連線,例:
select*
fromt_user1,t_user2
wheret_user1.id = t_user2.id結果
idname id
name 1
10a 1
10bb.外連線
外連線分為左外連線,右外連線和全外連線。
1.左外連線left outer join 或者 left join
左外連線就是在等值連線的基礎上加上主表中的未匹配資料,例:
select*
fromt_user1
leftouterjoint_user2
ont_user1.id = t_user2.id
oracle 支援另一種寫法
select*
fromt_user1 ,t_user2
wheret_user1.id=t_user2.id(+)
結果:
idname id
name 1
10a 1
10b 2
20a三個表做左外連線
select*
fromt_user1
leftouterjoint_user2
ont_user1.id=t_user2.id
leftouterjoint_user3
ont_user1.id=t_user3.id
oracle 支援的另外一種寫法
select*
fromt_user1,t_user2,t_user3
wheret_user1.id=t_user2.id(+)
andt_user1.id=t_user3.id(+)
結果:
idname id
name id
name 1
10a 1
10b 1
10c 2
20a2.
右外連線right outer join 或者 right join
右外連線是在等值連線的基礎上加上被連線表的不匹配資料
select*
fromt_user1
rightouterjoint_user2
ont_user1.id=t_user2.id
oracle支援的另一種寫法
select*
fromt_user1,t_user2
wheret_user1.id(+)=t_user2.id
結果:
idname id
name 1
10a 1
10b 3
30b3.全外連線full outer join 或者 full join
全外連線是在等值連線的基礎上將左表和右表的未匹配資料都加上
select*
fromt_user1
fullouterjoint_user2
ont_user1.id=t_user2.id
全外連線的等價寫法,對同一表先做左連線,然後右連線
selectt_user1.*,t_user2.*
fromt_user1
leftouterjoint_user2
ont_user1.id = t_user2.id
union
selectt_user1.*,t_user2.*
fromt_user2
leftouterjoint_user1
ont_user1.id = t_user2.id
結果:
id name id
name 1
10a 1
10b 2
20a 3
30b
就總結這麼多吧。後面遇到再接著寫。
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...