日期:2014-05-16  浏览次数:20498 次

left join on、where后面条件区别

left join on 即左连接,把left join左边的表的记录全部找出来。

select a.* from a left join b on a.id=b.id where b.end_date=to_date('99991231','yyyymmdd')

?

写在不同的位置,得到的结果可能会不同,这一点要注意。

?

两个表关联条件写在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

?

进行左连接时,就有涉及到主表、辅表,这时主表条件写在WHERE之后,辅表条件写在ON后面!!!