什么是默认的MySQL JOIN行为,INNER或OUTER?
所以我在最后一个小时一直在浏览互联网,阅读并寻找这个简单问题的明确答案。
MySQL中默认的JOIN是什么?
SELECT * FROM t1 JOIN t2
这是一样的
SELECT * FROM t1, t2 OR SELECT * FROM t1 INNER JOIN t2
还有一个相关的问题,当你使用“WHERE”子句时,是否和JOIN或INNER JOIN一样?
现在我想单独的JOIN和使用逗号和WHERE子句是一样的。
在MySQL写入JOIN
不合格意味着INNER JOIN
。 换句话说INNER JOIN
中的INNER JOIN
是可选的。 INNER
和CROSS
是MySQL中的同义词。 为了清楚起见,如果我没有条件,如果我有连接条件和CROSS JOIN
则写入JOIN
或INNER JOIN
。
文档中描述了允许的连接语法。
现在我正在考虑一个独立的JOIN只不过是使用逗号和WHERE子句(相同)。
效果是一样的,但背后的历史是不同的。 逗号语法来自ANSI-89标准。 然而这个语法有很多问题,所以在ANSI-92标准中引入了JOIN关键字。
我强烈build议你总是使用JOIN语法而不是逗号。
-
T1 JOIN T2 ON ...
比T1, T2 WHERE ...
更可读T1, T2 WHERE ...
- 它更易于维护,因为表格关系和filter是明确定义的而不是混合在一起的。
- JOIN语法比逗号语法更容易转换为OUTER JOIN。
- 在同一个语句中混合使用逗号和JOIN语法会由于优先规则而导致奇怪的错误。
- 使用JOIN语法时由于被遗忘的连接子句而不小心创build笛卡尔积,因为连接子句写在连接旁边,很容易看出是否缺less连接子句。
这些都是等价的,也等于CROSS JOIN
。
使用逗号和[INNER | CROSS] JOIN
之间有一些区别 [INNER | CROSS] JOIN
语法,这在连接更多表时可能很重要。 几乎所有你需要知道的是在MySQL JOIN
文档中描述的 。