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