join on是什么连接左连接条件与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 条件后⾯。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。