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是對整個結果出來 後進行的一個過濾條件,不知道這種解釋是否行得通,

還望大佬指正理解;

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