[size=medium]
oracle的聯接分如下幾種:
內連線(inner join)。
外聯接:
全連線(full join)、左連線(left join)、右連線(right join)。
交叉聯接(cross join)。
外聯接與內聯接不一樣,外連線返回到查詢結果中的不僅包含符合條件的行,還包括左表(左外連線),右表(右外連線)或者兩個連線表(全外連線)中的所有不符合條件的資料行。
1.左聯接 (left [outer] join)
左外聯結就是將左表的所有資料分別於右表的每條資料進行連線組合,返回的結果除內連線的資料外,還有左表中不符合條件的資料,並在右表的相應列中填上null值。
sql語句如下:
select * from mt_pb_org o left join mt_pb_orgframe f on o.pb_orgframeid = f.pb_orgframeid;
等價語句:
select * from mt_pb_org o,mt_pb_orgframe f where o.pb_orgframeid = f.pb_orgframeid(+);
2.右聯接 (right [outer] join)
右外聯結就是將右表中的所有資料分別與左表的每條資料進行連線組合,返回的結果除了內連線的資料外,還有右表中不符合條件的資料,並在左表相應的列中填上null值。
sql語句如下:
select * from mt_pb_org o right join mt_pb_orgframe on o.pb_orgframeid = f.pb_orgframeid;
等價語句:
select * from mt_pb_org o,mt_pb_orgframe f where o.pb_orgframeid(+) = f.pb_orgframeid;
3.全外聯接 (full [outer] join)
全外聯接就是將左表的所有資料分別與右表的每條資料進行連線組合,返回的結果除了內連線的資料外,還有兩個表中不符合條件的資料,並在左表或者右表的相應列中填上null值。
sql語句如下:
select * from mt_pb_org o full join mt_pb_orgframe o.pb_orgframeid = f.pb_orgframeid;
4.交叉連線(cross join)
交叉連線不帶where 子句,它返回被連線的兩個表所有資料行的笛卡爾積,返回到結果集合中的資料行數等於第乙個表中符合查詢條件的資料行數乘以第二個表中符合查詢條件的資料行數。
sql語句如下:
select * from mt_pb_org o cross join mt_pb_orgframe f;
[/size]
聯接 交叉聯接
在邏輯上,交叉聯接是一種最簡單的聯接。交叉聯接只實現乙個邏輯查詢步驟 笛卡爾積 這一步是對輸入的兩個表進行操作,把它們聯接起來,生成二者的笛卡爾積。也就是將乙個輸入表的每行與另乙個表的所有行進行匹配。如果乙個表有m行,而另乙個表有n行,將得到m n行的結果集。sql server 支援交叉聯接的兩種...
內聯,左外聯,右外聯,全連線,交叉連線 的區別
eg select from t institution i inner join t teller t on i.inst no t.inst no where i.inst no 5801 其中inner可以省略。等價於早期的連線語法 select from t institution i,t ...
MySQL之內聯接 左聯接 右聯接 交叉聯接
資料庫中的聯接 join 是乙個非常重要的概念,能夠很好地幫助我們解決資料庫的相關問題。本文將講解mysql中的聯接方式 內聯接 inner join 左聯接 left join 右聯接 right join 交叉連線 cross join 我們將以下面兩張 t1與t2為例來具體講解上述四種聯接方式...