在JOIN语句上添加其他谓词与在WHERE语句中将它们添加为附加子句之间有什么区别吗?
示例1:WHERE子句的谓词
select emp.* from Employee emp left join Order o on emp.Id = o.EmployeeId where o.Cancelled = 0
示例2:JOIN语句的谓词
select emp.* from Employee emp left join Order o on emp.Id = o.EmployeeId and o.Cancelled = 0
解决方法
使用第一个语句,由于WHERE条件,外连接有效地转换为内连接,因为它将过滤掉没有找到订单的employee表中的所有行(因为o.Cancelled将为NULL)
所以这两个陈述没有做同样的事情.