在MySQL中,写
JOIN不合格的隐含含义
INNER JOIN。换句话说,
INNERin
INNERJOIN是可选的。
INNER而
CROSS在MySQL的同义词。为了清楚起见,我写
JOIN或者
INNERJOIN如果我有一个连接条件,
CROSS JOIN如果我没有条件。
文档中介绍了允许的联接语法。
现在,我认为独立的JOIN就是(使用)逗号和WHERe子句。
效果是一样的,但背后的历史却不同。逗号语法来自ANSI-89标准。但是,此语法存在许多问题,因此在ANSI-92标准中引入了JOIN关键字。
我强烈建议您 始终 使用JOIN语法而不是逗号。
T1 JOIN T2 ON ...
比更具可读性T1, T2 WHERe ...
。- 它更易于维护,因为表关系和过滤器已明确定义,而不是混合在一起。
- 与逗号语法相比,JOIN语法更容易转换为OUTER JOIN。
- 由于优先规则,在同一条语句中混合使用逗号和JOIN语法会产生奇怪的错误。
- 由于忘记了连接子句,因此在使用JOIN语法时不太可能意外地创建笛卡尔乘积,因为连接子句写在连接的旁边,并且很容易看出是否缺少连接子。



