两者之间有什么区别吗?
SELECT *
FROM TABLE_A a
JOIN TABLE_B b
ON a.propertyA = b.propertyA
Run Code Online (Sandbox Code Playgroud)
和查询
SELECT * from TABLE_A a, TABLE_B b where a.propertyA=b.propertyA.
Run Code Online (Sandbox Code Playgroud)
INNER JOIN是您在第一个语法上使用的ANSI(SQL-92)语法.它通常被认为更具可读性,尤其是当您加入大量表时.
该WHERE syntax(SQL-89)更关系模型为主.两个表JOIN'ed的结果是应用了过滤器的表的笛卡尔积,其仅选择具有连接列匹配的那些行.
使用WHERE语法更容易看到这一点.
我宁愿继续使用ANSI类型连接,因为如果你有一些如何省略该ON子句,则会产生错误,而旧类型的连接如果省略条件on where子句将不会产生错误消息,因此它将生成笛卡尔积.