先分析一下基础的sql语句
select * from student st LEFT JOIN score se on st.id = se.stu_id and st.gender is not null
对于该sql的,很明显想要的业务就是,找出所有性别不是null的所有学生的成绩;
结果呢....
是这样的...分析这个结果,会发现,首先会按照所有不是null的学生张三.王五查询其对应的成绩......然后left的作用就展现了.....left是以左表为主表,所以在没有where条件的约束下,左表所有记录都要展示的,右表以null值来匹配字段;
所以如果是想查询所有性别不是null的学生的成绩,应该就是
以where条件来进行约束....而不是on后面的and条件进行约束,
其实基于on后面的and条件的真是应用场景,还是不太清楚;
//后来想想这个场景是可以勉强说的通的,后期
看来后期有需要新的业务场景的时候,再来进行补充了...
其实,可以理解为where是对整个结果出来 后进行的一个过滤条件,不知道这种解释是否行得通,
还望大佬指正理解;