水滴石穿

渴望成为高手--Amy.Qiu
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Left Join 中on与where的区别

Posted on 2008-06-16 11:20  AmyQiu  阅读(710)  评论(0编辑  收藏  举报

 

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可以帮助检查语句中的无效或者误写的关联条件