join中,on 和 where 的区别:
两个表在join时,首先做一个笛卡尔积,on后面的条件是对这个笛卡尔积做一个过滤形成一张临时表,如果没有where就直接返回结果,如果有where就对上一步的临时表再进行过滤。
再使用left join 时,on 和 where条件的区别如下:
- on条件是在生成临时表时使用的条件,他不管on的条件是否为真,都会返回左边表所有的记录
- where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义了,where后提交不为真的就全部过滤掉
如下:
来源:CSDN
作者:似轲
链接:https://blog.csdn.net/mlh532354163/article/details/104719925