概述
说明:left join on 后的 and 条件中 主表的条件不生效,从表的条件生效,并且从表先进行筛选后数据量可能变少,更便于与主表关联,有利于提高查询效率。
建议:主表的筛选条件放在 where 中,从表的 筛选条件放在 on 后的 and 中。
- on条件是在生成临时表时使用的条件,它不管and中的条件是否为真,都会返回左边表中的所有记录。 所以说 and后 加 左表的条件对
左表无影响。and后的条件只对右表产生影响 (right join翻过来) - where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left
join的含义(必须返回左表的记录)了,条件不为真的就全部过滤掉。即对 join后的数据再进行过滤,过滤出只符合where后的条件。 - 在匹配阶段 where子句的条件都不会被使用。仅在匹配阶段完成以后,wehre子句条件才会被使用。它将从匹配阶段产生的数据中检索过滤
总结:
-
当条件加在 left(right) join on之后,则只会影响右(左)边数据,不会影响左(右)表数据,不管条件是否成立,左(右))边数据都能正常返回;
-
inner join and 和 inner join where and 其查询结果基本一致;
-
当条件加在full on之后,则会根据and之后的条件分别影响左表或右表数据;
-
当条件加在where 之后则表示对关联结果再进行筛选,此时的结果将会依赖于where后边条件的真假
最后
以上就是故意汽车为你收集整理的MySQL中 left join on 后的 and 条件与 where 中条件的区别的全部内容,希望文章能够帮你解决MySQL中 left join on 后的 and 条件与 where 中条件的区别所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复