Mysql:ON 与 WHERE 的区别

口诀:先执行 ON,后执行 WHEREON 是建立关联关系,WHERE 是对关联关系的筛选。记住这句话就可以准确地判断查询结果了,我们通过两个 sql 来进行分析:

意思就是当在多表连接的时候,on会先执行过滤,之后他们在做连接,这时候要是是左连接或右连接,那么就会有多余的null字段。
例子如下:
A表

Mysql:ON 与 WHERE 的区别
B表

Mysql:ON 与 WHERE 的区别

where 结果:

Mysql:ON 与 WHERE 的区别

on 结果:

Mysql:ON 与 WHERE 的区别

这是因为on先执行了查询生成临时表,然后进行左连接。