join的一些使用



join和一些其他关键字联合起来使用的时候给我不了解的地方就是sql的执行顺序。特意去图书馆找了本sql进阶书籍观看,以此记下心得。join的其他用法网上资料有一堆,并不继续讲述。

关于以下语句成功执行出我想要的结果,left join的时候最好把数据较多的表放在左表当中,我用right join的时候给我的数据并不完整,其中缘由我需要整理一下。

sql的执行顺序为from后面的表与join先执行,那么就是两表直接连接,接着通过on来限制对接的数据列,然后where对结果进行筛选,然后进行groupby来分组之后进行选出。

1
$ select case when conversion.offer_Id='1000dm0bj6gq' then 'PS4' else 'PS3' end as Collateral,sum(conversion.email_campaign_cnvrsn_cnt),sum(process.Targeted_User_Cnt) from EADW_ADM_APP.CAMPAIGN_PROCESS process left join EADW_ADM_APP.CAMPAIGN_CONVERSION conversion on conversion.Campaign_Id=process.Campaign_Id and conversion.offer_Id=process.offer_Id and conversion.Segment_Id=process.Segment_Id and conversion.Step_Order_Nbr=process.Step_Order_Nbr and conversion.Step_Id=process.Step_Id and conversion.Country_Code=process.Country_Code and conversion.Campaign_Collection_Id=process.Campaign_Collection_Id and conversion.Generation_Date=process.Generation_Date and conversion.Lead_Type_Id=process.Lead_Type_Id  where process.Campaign_Id='1000dm0bj63b' and process.lead_type_id='999' group by process.offer_Id;

以前写的sql,on跟的限制条件不多,所以对接的时候有一堆重复数据,如果没有约束的时候,仅用普通的列相对接的话,要考虑好限制条件。