JPA mysql 的left join 中 on条件和where条件的区别

先分析一下基础的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是对整个结果出来 后进行的一个过滤条件,不知道这种解释是否行得通,

还望大佬指正理解;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章