执行它们时并没有真正的区别,但是在工作中存在可读性,一致性和减轻错误的问题:
想象一下,如果您有4张桌子,如果使用老式的INNER JOIN方法,那么最终结果将是:
SELECt col1, col2FROM tab1, tab2, tab3,tab4WHERe tab1.id=tab2.tab1_idAND tab4.id = tab2.tab3_idAND tab4.id = tab3.tab4_id;
使用显式的INNER JOINS它将是:
SELECt col1, col2FROM tab1INNER JOIN tab2 ON tab1.id = tab2.tab1_idINNER JOIN tab3 ON tab3.id = tab2.tab3_idINNER JOIN tab4 ON tab4.id = tab3.tab4_id;
后者显示了您在桌子前面的确切位置。它具有更高的可读性,并且更容易出错,因为与在WHERe中添加另一个AND或完全添加错误的条件(就像我在上面的查询中所做的一样)相比,忘记ON子句更容易忘了。
另外,如果您正在执行其他类型的JOINS,则使用显式的编写方式,您只需将INNER更改为其他名称,并且代码将被一致地构造。



