Oracle PL/SQL以内联接、外联接、交叉链接
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;