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中的条件先筛选,再返回结果。

猜你喜欢

转载自www.cnblogs.com/meng9527/p/10030692.html