左连接条件与where条件的区别
Sql 查询语句应用左连接时的链接条件中经常加一些常量值在里面如:
“On a.id= b.id and b.is_del =0 and b.is_old =1” 这种条件如果加在表与表之间连接后的where条件中时有什么不一样呢?
答:其实仔细想想我们都能想到,左连接的目的是要取左边的所有数据,如果条件中右边表中的字段与左边表中的字段是一对一关系,那连接时要保证右边数据不为null,只能让”a.id = b.id and b.is_del =0,b.is_old=1”;否则即使a.id=b.id 满足条件同样右边的数据只能用null来补全,这种情况下如果左边有10条数据,右边只有7条数据完全符合条件,那结果就是有10条数据显示出来只不过有三条数据右边表中的数据是null;如果将此b.is_del = 0 and b.is_old =1 放在where后面那么就会发现结果中一共有7条数据那三条空数据已经被删除了,这就是区别。
总结一下规律:
放在on里面就是先筛选后连接,保证连接左边数据完整;放在where中就得先连接后筛选。
如果使用INNER JOIN 效果是一样的所以建议同一放在where 条件后面。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?