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關鍵字後的連接配接字段不用括号也可以正常使用。
多表連接配接:
<code>--先連接配接table4和table5并将其結果集命名為table2,再與table1連接配接</code>
<code>select</code> <code>table1.</code><code>column</code><code>,table2.</code><code>column</code>
<code>from</code> <code>table1 </code>
<code> </code><code>inner</code> <code>join</code>
<code>( </code><code>select</code> <code>table4.</code><code>column</code><code>,table5.</code><code>column</code>
<code> </code><code>from</code> <code>table4 </code><code>inner</code> <code>join</code> <code>table5 </code>
<code> </code><code>on</code> <code>table4.</code><code>column</code> <code>=table5.</code><code>column</code> <code>) </code><code>as</code> <code>table2 </code>
<code>on</code> <code>table1.</code><code>column</code><code>=table2.</code><code>column</code><code>;</code>
<code>等同于</code>
<code>select</code> <code>table1.</code><code>column</code> <code>,table2.</code><code>column</code>
<code>from</code> <code>table1 ,(</code><code>select</code> <code>table4.</code><code>column</code><code>,table5.</code><code>column</code>
<code> </code><code>from</code> <code>table4,table5 </code>
<code> </code><code>where</code> <code>table4.</code><code>column</code><code>=table5.</code><code>column</code><code>) </code><code>as</code> <code>table2</code>
<code>where</code> <code>table1.</code><code>column</code><code>=table2.</code><code>column</code><code>;</code>
<code>--連接配接table1,table2,table3,沒有連接配接順序之分</code>
<code>select</code> <code>table1.</code><code>column</code><code>,table2.</code><code>column</code><code>,table3.</code><code>column</code>
<code>from</code> <code>table1 </code><code>inner</code> <code>join</code> <code>table2 </code>
<code> </code><code>on</code> <code>table1.</code><code>column</code><code>=table2.</code><code>column</code>
<code> </code><code>inner</code> <code>join</code> <code>table3</code>
<code> </code><code>on</code> <code>table1.</code><code>column</code><code>=table3.</code><code>column</code><code>;</code>
<code>from</code> <code>table1,table2.table3</code>
<code>where</code> <code>table1.</code><code>column</code><code>=table2.</code><code>column</code> <code>and</code> <code>table1.</code><code>column</code><code>=table3.</code><code>column</code><code>;</code>
内連接配接:
标準寫法:
<code>select</code> <code>table</code><code>.</code><code>column</code> <code>, table2.</code><code>column</code>
<code>from</code> <code>table1 </code><code>inner</code> <code>join</code> <code>table2 </code><code>on</code> <code>(table1.</code><code>column</code><code>=table2.</code><code>column</code><code>);</code>
oracle 特殊寫法:
<code>select</code> <code>table</code><code>.</code><code>column</code> <code>, table2.</code><code>column</code>
<code>from</code> <code>table1 ,table2</code>
左連接配接:
<code>select</code> <code>table</code><code>.</code><code>column</code> <code>, table2.</code><code>column</code>
<code>from</code> <code>table1 </code><code>left</code> <code>join</code> <code>table2 </code><code>on</code> <code>(table1.</code><code>column</code><code>=table2.</code><code>column</code><code>);</code>
<code>where</code> <code>table1.</code><code>column</code><code>=table2.</code><code>column</code><code>(+);</code>
右連接配接:
<code>select</code> <code>table</code><code>.</code><code>column</code> <code>, table2.</code><code>column</code>
<code>from</code> <code>table1 </code><code>right</code> <code>join</code> <code>table2 </code><code>on</code> <code>(table1.</code><code>column</code><code>=table2.</code><code>column</code><code>);</code>
<code>where</code> <code>table1.</code><code>column</code><code>(+)=table2.</code><code>column</code><code>;</code>
全連接配接:
<code>from</code> <code>table1 </code><code>full</code> <code>join</code> <code>table2 </code><code>on</code> <code>(table1.</code><code>column</code><code>=table2.</code><code>column</code><code>);</code>
<code>where</code> <code>table1.</code><code>column</code><code>(+)=table2.</code><code>column</code><code>(+);</code>
<code></code>
本文轉自 天黑順路 51CTO部落格,原文連結:http://blog.51cto.com/mjal01/1975625,如需轉載請自行聯系原作者