JOIN ON后面的过滤条件和where后面的过滤条件有什么不同?

在SQL查询中,LEFT JOIN ON后的过滤条件只影响连接的子表,而WHERE子句中的过滤条件则作用于整个查询结果。当在LEFT JOIN ON后面设置过滤条件时,仅对左连接的表进行过滤,如果主表没有匹配的记录,结果中的对应字段将为NULL。因此,为了过滤主表数据,应该将过滤条件放在WHERE子句中。
摘要由CSDN通过智能技术生成

今天做报表过滤时:

      需要在系统产生的sql上增加过滤条件,刚开始为了代码的书写方便,我直接把过滤条件(T_CYJ_OrgToArea.FAreaID='区域' ,T_CYJ_OrgToState.FOrgIDID=‘业态’)写到了LEFT OUTER JOIN ON后面,源码如下面的黑体字:

from  CT_CYK_CustomerBaseInfo" +
" LEFT OUTER JOIN T_BD_Customer ON CT_CYK_CustomerBaseInfo.CFCustNameID=T_BD_Customer.FID");
          sql.append(" LEFT OUTER JOIN T_BD_Customer  as linCustomer ON  CT_CYK_CustomerBaseInfo.CFMainLinkMenID=linCustomer.FID  "+
               " LEFT OUTER JOIN T_CYJ_CustomerUnit ON CT_CYK_CustomerBaseInfo.CFUnitsOneID=T_CYJ_CustomerUnit.FID "+
               " LEFT OUTER JOIN CT_CYK_CustomerBIDIE ON CT_CYK_CustomerBaseInfo.FID=CT_CYK_CustomerBIDIE.FPARENTID and  CT_CYK_CustomerBIDIE.CFISMAINDUTY=1 "+
               " LEFT OUTER JOIN

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值