Oracle PL/SQL之内联接、外联接、交叉连接

Posted on 2011-08-13 22:41  xublogs  阅读(3884)  评论(0编辑  收藏  举报

oracle的联接分如下几种:
内联接(inner join)。
外联接(outer join):全联接(full join)、左联接(left join)、右联接(right join)。
交叉联接(cross join)。


外联接与内联接不一样,外连接返回到查询结果中的不仅包含符合条件的行,还包括左表(左外连接),右表(右外连接)或者两个连接表(全外连接)中的所有不符合条件的数据行。

 

0.内联接 ([inner] join)
内联结就是将左表的所有数据分别于右表的每条数据进行连接组合,返回的结果为同时满足左右表联接条件的数据。
SQL语句如下:
select * from mt_pb_org o [inner] 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;
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;
等价语句:
select * from mt_pb_org o , mt_pb_orgframe f;

 

FROM(对原文略有改动): http://pengtingming.blog.163.com/blog/static/13556932008622104628262/