MSSQLSERVER数据库- LEFT JOIN后面跟着WHERE竟变成内联 解决方法
在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语句就可以满足要求。做连接的时候就过滤了右边的一些记录,这样就算右表不符合条件的左表记录也可以查询出来。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。