表testa,testb,testc,各有a, b兩列 a
b001
10a002
20a
a b
001
10b
003
30b a
b001
10c004
40c
連線分為兩種:內連線與外連線。
a.內連線
內連線,即最常見的等值連線,例:
select*
fromtesta,testb
wheretesta.a=testb.a結果
a b
a b
001
10a
001
10b
b.外連線
外連線分為左外連線,右外連線和全外連線。 1.
左外連線left outer join 或者 left join
左外連線就是在等值連線的基礎上加上主表中的未匹配資料,例:
select*
fromtesta
left outer jointestb
ontesta.a=testb.a
oracle 支援另一種寫法
select*
fromtesta,testb
wheretesta.a=testb.a(+)
結果: a
b a
b 001
10a
001
10b
002
20a
三個表做左外連線
select*
fromtesta
left outer jointestb
ontesta.a=testb.a
left outer jointestc
ontesta.a=testc.a
oracle 支援的另外一種寫法
select*
fromtesta,testb,testc
wheretesta.a=testb.a(+)
andtesta.a=testc.a(+)
結果: a
b a
b a
b 001
10a
001
10b
001
10c
002
20a 2.
右外連線right outer join 或者 right join
右外連線是在等值連線的基礎上加上被連線表的不匹配資料
select*
fromtesta
right outer jointestb
ontesta.a=testb.a
oracle支援的另一種寫法
select*
fromtesta,testb
wheretesta.a(+)=testb.a
結果: a
b a
b 001
10a
001
10b
003
30b
3.全外連線full outer join 或者 full join
全外連線是在等值連線的基礎上將左表和右表的未匹配資料都加上
select*
fromtesta
full outer jointestb
ontesta.a=testb.a
全外連線的等價寫法,對同一表先做左連線,然後右連線
selecttesta.*,testb.*
fromtesta
left outer jointestb
ontesta.a=testb.a
union
selecttesta.*,testb.*
fromtestb
left outer jointesta
ontesta.a=testb.a
結果: a
b a
b 001
10a
001
10b
002
20a
003
30b
Oracle 內連線,外連線
誰能詳細解釋一下oracle的內連線和外連線。一般的相等連線 select from a,b where a.id b.id 這個就屬於內連線。對於外連線 oracle中可以使用 來表示,9i可以使用left right full outer join left outer join 左外關聯 se...
Oracle外連線,左外連線,右外連線,內連線簡析
內連線即普通等值連線 select e.ename,e.job,e.sal,d.dname from emp e inner join dept d on e.deptno d.deptno where e.sal 2000 select e.ename e.job,e.sal d.dname fr...
oracle連線查詢 內連線 外連線 全連線
oracle 中的連線可分為,內連線 inner join 外連線 outer join 全連線 full join 不光是oracle 其他很多的資料庫也都有這3 種連線查詢方式 內連線inner join 這是我們經常用的查詢方式,比如select from a,b where a.field1...