SQL语句中连接on条件和where条件的执行顺序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL语句中连接on条件和where条件的执行顺序相关的知识,希望对你有一定的参考价值。

参考技术A 首先,来看下面的SQL查询语句

我期望的结果是:表a的数据全部展示出来,然后,过滤掉不符合表b条件的结果。
但是,答案却出乎我的意料,所有数据都被过滤掉了,最终结果并不符合left join的语义,表a是主表,无论如何是应该展示出来的,但是并没有。
问题出在哪里呢?

这里牵扯到的是sql语句中on后的条件和where后的条件的执行顺序问题。

这里,有必要再次明确一下left join...on... 语法的准确含义。

有了上面的基础知识,就可以进一步去理解阐述了。

有时候,很简单的问题,却并不简单。回头看,还是对基础概念把握的不够明晰,有模糊的地方。
这里的on条件和where条件的作用是完全不同的。on条件不具备过滤作用,只做判断。而where条件不仅做判断,还要对结果进行过滤。

参考自: https://www.cnblogs.com/dancesir/p/7600265.html

以上是关于SQL语句中连接on条件和where条件的执行顺序的主要内容,如果未能解决你的问题,请参考以下文章

sql中where的与jnner join on的连接条件.哪个优先级别高?

sql查询语句中on和where的区别

SQL 之 ON 和 WHERE执行顺序

写sql时,使用where 1=1进行条件拼接时 如果第一个条件不成立时,后面的条件会继续执行吗

mysql on和where区别

SQL执行顺序