谈谈oracle里的join、left join、right join、full join
谈谈oracle里的join、left join、right join、full join
示例表
|
create table l as |
1. inner join
|
返回两表相匹配的数据 即 交集 |
2.left join
|
左表为主表,左表返回全部数据,右表只返回与左表相匹配的数据 |
3.right join
|
右表为主表,左表只返回与右表相匹配的数据 |
4. Full join
|
左右表均返回全部的数据,但是只有相匹配的数据显示在一行,非匹配的数据只显示一个表的数据 |
5.full join
|
5.1全部结果集 106 select t1.fpdm,t1.fphm ,t1.zjr,t1.zjsj,t1.zjjx,t1.zjje,t1.zflx,t1.zfid,t2.fphm,t2.zflx from yw_zjfpjl t1 full join xxdzmx t2 on t2.fpdm=t1.fpdm and t2.fphm=t1.fphm
5.2右边有左边没有 10-1=9 select t1.fpdm,t1.fphm ,t1.zjr,t1.zjsj,t1.zjjx,t1.zjje,t1.zflx,t1.zfid,t2.fphm,t2.fpdm,t2.zflx,t2.dzyf from yw_zjfpjl t1 full join xxdzmx t2 on t2.fphm||t2.fpDm = t1.fphm||t1.fpdm where t2.fphm is not null and t2.zflx =0 and substr(t2.dzyf,1 ,4)||'-'||substr(t2.dzyf,5,2)='2016-10' ;
5.3左边有右边没有 97-1=96 select t1.fpdm,t1.fphm ,t1.zjr,t1.zjsj,t1.zjjx,t1.zjje,t1.zflx,t1.zfid,t2.fphm,t2.fpdm,t2.zflx from yw_zjfpjl t1 full join xxdzmx t2 on t2.fphm||t2.fpDm = t1.fphm||t1.fpdm where (t1.zflx='0' and TO_CHAR(t1.zjsj,'YYYY-MM')='2016-10' );
5.4左边有右边没有 右边有左边没有 (97-1)+(10-1)=105 select t1.fpdm,t1.fphm ,t1.zjr,t1.zjsj,t1.zjjx,t1.zjje,t1.zflx,t1.zfid,t2.fphm,t2.fpdm,t2.zflx,t2.dzyf from yw_zjfpjl t1 full join xxdzmx t2 on t2.fphm||t2.fpDm = t1.fphm||t1.fpdm where (t2.fphm is not null and t2.zflx ='0' and substr(t2.dzyf,1 ,4)||'-'||substr(t2.dzyf,5,2)='2016-10') or (t1.zflx='0' and TO_CHAR(t1.zjsj,'YYYY-MM')='2016-10' );
5.5 inner join 交集=1 select t1.fpdm,t1.fphm ,t1.zjr,t1.zjsj,t1.zjjx,t1.zjje,t1.zflx,t1.zfid, t2.fphm,t2.fpdm,t2.zflx from yw_zjfpjl t1 inner join xxdzmx t2 on t2.fphm||t2.fpDm = t1.fphm||t1.fpdm where t2.fphm is not null and t2.zflx='0' and t1.zflx='0' and TO_CHAR(t1.zjsj,'YYYY-MM')='2016-10' and substr(t2.dzyf, 0, 4)||'-'||substr(t2.dzyf, 5, 2)='2016-10'; |