天天看點

MYSQL join..on 後的and 和where的差別

今天在寫SQL的時候發現一個問題  明明加了條件卻還是篩選出來了

運作平台:Mysql

目的:比較join......on 後面的and 和where的差別

用AND後的SQL和結果集。還是有383這條結果集

MYSQL join..on 後的and 和where的差別

用where後的SQL和結果集。沒有了這條記錄

MYSQL join..on 後的and 和where的差別

結論

1.where 是在兩個表join完成後,再附上where條件

2.而 and 則是在表連接配接前過濾A表或B表裡面哪些記錄符合連接配接條件,同時會兼顧是left join還是right join。即

假如是左連接配接的話,如果左邊表的某條記錄不符合連接配接條件,那麼它不進行連接配接,但是仍然留在結果集中(此時右邊部分的連接配接結果為NULL)。on條件是在生成臨時表時使用的條件,它不管on中的條件是否為真,都會傳回左邊表中的記錄。

3.建議盡量用where來過濾條件

繼續閱讀