Left Join 中on与where的区别

 

SELECT   *   FROM   A   LEFT   JOIN   B   ON   A.ID=B.ID   WHERE   B.OTHERKEY=XXXX 
与 
SELECT   *   FROM   A   LEFT   JOIN   B   ON   A.ID=B.ID   AND   B.OTHERKEY=XXXX 
是不一样的 

后者相当于 
SELECT   *   FROM   A   LEFT   JOIN   B   ON   A.ID=B.ID   WHERE   B.OTHERKEY=XXXX   OR   B.OTHERKEY   IS   NULL 

尽量使用Join 而不是Where来列出关联条件,特别是多个表联合的时候。

原因是:

1)在效率上,Where可能具有和Inner join一样的效率。但基本可以肯定的是Join的效率不比Where差。

2)使用Join可以帮助检查语句中的无效或者误写的关联条件

原文地址:https://www.cnblogs.com/Ammy/p/1222933.html