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语句就可以满足要求。做连接的时候就过滤了右边的一些记录,这样就算右表不符合条件的左表记录也可以查询出来。

 

posted @   春天又来了  阅读(754)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示