1. 程式人生 > >SQL join 連線時 條件加在 on後面和 where 的區別

SQL join 連線時 條件加在 on後面和 where 的區別

task 是使用者任務表,manageuser是使用者表,以left join 為參考:

此時主表是task,三條sql語句:注意區別。第一句無篩選條件,第二句篩選條件在on後面,第三句sql的篩選語句放到where中

SELECT t.id,t.UseManage,u.ID,u.LoginName,u.UserType FROM dbo.Task t LEFT JOIN dbo.ManageUser u ON t.UseManage=u.ID

SELECT  t.id,t.UseManage,u.ID,u.LoginName,u.UserType FROM dbo.Task t LEFT
JOIN dbo.ManageUser u ON t.UseManage=u.ID AND t.Type=2 SELECT t.id,t.UseManage,u.ID,u.LoginName,u.UserType FROM dbo.Task t LEFT JOIN dbo.ManageUser u ON t.UseManage=u.ID where t.Type=2

搜尋結果如下

總結:where 會在最終結果中篩選,on中的條件先篩選,再返回結果。