码迷,mamicode.com
首页 > 数据库 > 详细

MSSQLSERVER数据库- LEFT JOIN后面跟着WHERE竟变成内联 解决方法

时间:2014-11-26 18:16:23      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   io   color   sp   数据   on   div   

  在LEFT JOIN后面跟着WHERE竟变成内联。百度后看到这个解决方法。

  记录如下:

 

 select sre.*, co.description 
 from subscribedratingelement sre left outer join custom_options co on sre.locationInCdr=co.optionvalue 
 where co.optionname=LocationInCdr;

 

 select sre.*, co.description 
 from subscribedratingelement sre left outer join custom_options co 
 on (sre.locationInCdr=co.optionvalue and co.optionname=LocationInCdr);

 

第一条SQL是一个左外连接,然后进行where过滤。仔细分析这个SQL会发现,最后的结果不是所期望的,custom_options表中不符合条件的记录本来是以null表示的,由于where中的过滤,导致查询出来的记录为null的部分都没有查询出来。这个左外连接就和内连接没有任何区别了。

第二个SQL语句就可以满足要求。做连接的时候就过滤了右边的一些记录,这样就算右表不符合条件的左表记录也可以查询出来。

 

MSSQLSERVER数据库- LEFT JOIN后面跟着WHERE竟变成内联 解决方法

标签:des   style   blog   io   color   sp   数据   on   div   

原文地址:http://www.cnblogs.com/cxeye/p/4123396.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!