先看兩張表結構
produc表
問題是下面兩個查詢結果有什麼不同
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的資料中過濾掉不符合條件的資料行。
SQL中join連線後面的on與where的區別
兩張測試表,資料如下 語文 select from t class a inner join t student b on a.id b.class id where a.name 語文 內連線下,不管a.name 語文 這個條件是在on還是在where中,查詢結果都是相同的 第一段指令碼 第二段指...
當心外部連線中的ON子句
在sql tuning中,不良寫法導致sql執行效率比比皆是。最近的sql tuning中乙個外部連線寫法不當導致過sql執行時間超過15分鐘左右此即 為一例。通過修正該sql的寫法之後,過高的邏輯讀呈數量級下降以及sql語句執行時間也大幅下降。下面給出乙個列子來演示該情形。一 建立演示環境 二 總...
當心外部連線中的ON子句
在sql tuning中,不良寫法導致sql執行效率比比皆是。最近的sql tuning中乙個外部連線寫法不當導致過sql執行時間超過15分鐘左右此即 為一例。通過修正該sql的寫法之後,過高的邏輯讀呈數量級下降以及sql語句執行時間也大幅下降。下面給出乙個列子來演示該情形。一 建立演示環境 二 總...