SQL左右連接中的on and和on where的區別


在使用left join時,on和where條件的區別如下:  
1、on條件是在生成臨時表時使用的條件,它不管on中的條件是否為真,都會返回左邊表中的記錄。(實際上左連接中如果and語句是對左表進行過濾的,那么不管真假都不起任何作用。如果是對右表過濾的,那么左表所有記錄都返回,右表篩選以后再與左表連接返回)  
2、where條件是在臨時表生成好后,再對臨時表進行過濾的條件。這時已經沒有left join的含義(必須返回左邊表的記錄)了,條件不為真的就全部過濾掉,on后的條件用來生成左右表關聯的臨時表,where后的條件對臨時表中的記錄進行過濾。

在使用inner join時,不管是對左表還是右表進行篩選,on and和on where都會對生成的臨時表進行過濾。

 

EG:

 

EG:

 

EG1為正確用法 EG2為錯誤用法  通過兩個例子對比可以發現AND ON只是對右表數據進行過濾 然后加到左表 拼接成臨時表  WHERE 才是對臨時表表數據進行過濾

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM