連接查詢中on and和on where的區別


一、區別


1、 and條件是在生成臨時表時使用的條件,它不管and中的條件是否為真,都會返回左(或者右)邊表中的記錄。

2、where條件是在臨時表生成好后,再對臨時表進行過濾的條件。這時已經沒有left join的含義(必須返回左邊表的記錄)了,條件不為真的就全部過濾掉。

二、例

  1. produc表 

  2. produc_details

問題是下面兩個查詢結果有什么不同

1.SELECT * FROM product LEFT JOIN product_details ON (product.id = product_details.id) AND product_details.id=2; 2.SELECT * FROM product LEFT JOIN product_details ON (product.id = product_details.id) WHERE product_details.id=2; 

結果是
1.第一條查詢結果為

2第二條查詢結果為

分析

第一條查詢使用 ON 條件決定了從 LEFT JOIN的 product_details表中檢索符合的所有數據行。
第二條查詢做了簡單的LEFT JOIN,然后使用 WHERE 子句從 LEFT JOIN的數據中過濾掉不符合條件的數據行。


免責聲明!

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



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