sql 条件加在 left join 与where后面的区别
2012-08-28 15:32
246 查看
做项目时遇到一问题,前台页面查询数据查不到,后台能查询到数据,百思不得其解,查询的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 后,两个根本不是一个意思……
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 后,两个根本不是一个意思……
相关文章推荐
- sql 左连接(left join),右链接(right join) 条件放在on和放在where 的区别
- left join 过滤条件写在on后面和写在where 后面的区别
- SQL_left join中on和where条件的区别
- left join 过滤条件写在on后面和写在where 后面的区别
- sql中的left join及on、where条件关键字的区别详解
- left join 过滤条件写在on后面和写在where 后面的区别
- left join 过滤条件写在on后面和写在where 后面的区别
- oracle数据库sql语句left join,right join,inner join的条件on和where的区别
- sql语句中left join、inner join中的on与where的区别
- sql语句中left join、inner join中的on与where的区别
- sql 语句中where条件和jion on条件的区别
- SQL中on条件与where条件的区别 (having)
- JOIN联表中ON,WHERE后面跟条件的区别
- LEFT JOIN(联表)的条件写在ON中和WHERE的区别
- sql语句中left join、inner join中的on与where的区别
- sql的where后面的多个条件case when判断执行
- sql语句中left join、inner join中的on与where的区别
- SQL语句Left join 中On和Where的用法区别
- SQL中join on条件和where条件的区别
- 转:SQL:外连接on条件与where条件的区别