所以我在最后一小时一直在浏览互联网,阅读并寻找这个简单问题的最终答案。
MySQL中的默认JOIN是什么?
SELECT * FROM t1 JOIN t2
与
相同SELECT * FROM t1, t2
OR
SELECT * FROM t1 INNER JOIN t2
当你使用“WHERE”子句时,它是一个相关的问题,它是否与JOIN或INNER JOIN相同?
现在我认为独立的JOIN与使用逗号和WHERE子句相同。
答案 0 :(得分:113)
在MySQL编写JOIN
时,不合格意味着INNER JOIN
。换句话说,INNER
中的INNER JOIN
是可选的。 INNER
和CROSS
是MySQL中的同义词。为清楚起见,如果我有连接条件,我会写JOIN
或INNER JOIN
,如果我没有条件,我会写CROSS JOIN
。
documentation中描述了允许的连接语法。
现在我认为一个独立的JOIN只不过是使用逗号和WHERE子句(相同)。
效果是一样的,但它们背后的历史是不同的。逗号语法来自ANSI-89标准。但是这种语法存在许多问题,因此在ANSI-92标准中引入了JOIN关键字。
我强烈建议您始终使用JOIN语法而不是逗号。
T1 JOIN T2 ON ...
比T1, T2 WHERE ...
更具可读性。答案 1 :(得分:0)
这些都是等价的,也等于CROSS JOIN
。
使用逗号和[INNER | CROSS] JOIN
语法之间存在一些差异,这在加入更多表时可能很重要。几乎所有您需要知道的内容都在MySQL JOIN
documentation。