对于
inner join以下结果,它们是等价的,并且可能会产生相同的查询计划:
SELECt * FROM TableA a JOIN TableB b ON a.ColAFoo = b.ColBFoo AND a.ColAFoo2 = b.ColBFoo2SELECt * FROM TableA a JOIN TableB b ON a.ColAFoo = b.ColBFoo WHERe a.ColAFoo2 = b.ColBFoo2-- SQL89 inner join:SELECt * FROM TableA a, TableB b WHERe a.ColAFoo = b.ColBFoo AND a.ColAFoo2 = b.ColBFoo2
但是, 将连接条件放在
ON子句中将与其他程序员交流,“嘿!这是将表关联在一起的条件。”
与where子句中的内容相对,即“连接完成后限制结果的标准”。
此外,使用时,条件的位置在结果上有很大的不同
outer join,因此
on在所有情况下都应考虑加入联接条件。



