sql 条件加在 left join 与where后面的区别

做项目时遇到一问题,前台页面查询数据查不到,后台能查询到数据,百思不得其解,查询的sql如下:

select *  from xxx poi
left join yyy css on poi.ORG_ID = css.ORG_ID 
where 1=1   and( (css.RPT_YEAR = 2009 ) or  (css.RPT_YEAR is null ) )

本来是想以poi这张表为准,把所有满足条件的数据的数据查询出来,但是理解有问题,本意是想利用左外连接的方式查询出css表中的空行,但事得其反,条件加错地方了,修改如下:

select *  from xxx poi
left join yyy css on poi.ORG_ID = css.ORG_ID  and css.RPT_YEAR = 2009 
where 1=1  

现在终于明白为什么有些条件是加在left join 后,有些加在where 后,两个根本不是一个意思……

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值