oracle 表連接特有寫法與標準寫法

oracle裏表連接支持標準寫法,但也有oracle特殊的寫法,這兩種寫法在某些場景下會有差異,推薦使用標準寫法,這裏只是介紹表連接標準語法及瞭解oracle的特殊寫法。

標準連接語法:

select table1.column , table2.column

from table1

[corss join table2]

[national jon table2]

[join table2 using (column)]

[join table2 on (table1.column=table2.column)]

[left | right | full outer join table2 on (table1.column=table2.column)];


實際使用中on關鍵字後的連接字段不用括號也可以正常使用。


多表連接:

--先連接table4和table5並將其結果集命名爲table2,再與table1連接
select table1.column,table2.column 
from table1 
 inner join 
( select table4.column,table5.column 
   from table4 inner join table5 
   on table4.column =table5.column ) as table2  
on table1.column=table2.column;

等同於
select table1.column ,table2.column
from table1 ,(select table4.column,table5.column 
                  from table4,table5 
                  where table4.column=table5.column) as table2
where table1.column=table2.column;


--連接table1,table2,table3,沒有連接順序之分
select table1.column,table2.column,table3.column 
from table1 inner join table2 
         on  table1.column=table2.column
         inner join table3
         on table1.column=table3.column;

等同於
select table1.column,table2.column,table3.column 
from table1,table2.table3
where table1.column=table2.column and  table1.column=table3.column;


內連接:

標準寫法:

select  table.column , table2.column 
from table1 inner join table2 on (table1.column=table2.column);

oracle 特殊寫法:

select table.column , table2.column
from table1 ,table2
where table1.column=table2.column;


左連接:

標準寫法:

select   table.column , table2.column 
from table1 left join table2 on (table1.column=table2.column);

oracle 特殊寫法:

select  table.column , table2.column 
from table1 ,table2
where table1.column=table2.column(+);


右連接:

標準寫法:

select table.column , table2.column 
from table1 right join table2 on (table1.column=table2.column);

oracle 特殊寫法:

select   table.column , table2.column 
from table1 ,table2
where table1.column(+)=table2.column;


全連接:

標準寫法:

select  table.column , table2.column 
from table1 full join table2 on (table1.column=table2.column);

oracle 特殊寫法:

select  table.column , table2.column 
from table1 ,table2
where table1.column(+)=table2.column(+);


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