【发布时间】:2015-10-20 11:31:40
【问题描述】:
当我阅读有关CROSS JOIN 的文档时,我想知道,因为它似乎毫无意义。您只需使用逗号 , 即可。我测试了它(几次),这些查询的结果完全一样:
// one
SELECT * FROM table1 CROSS JOIN table2
// two
SELECT * FROM table1, table2
无论如何,我想知道:使用CROSS JOIN 代替, 有什么合乎逻辑的理由吗?
【问题讨论】:
-
如果我们认为 table_reference 项目列表中的每个逗号都等效于内部连接,则这是一个保守的扩展。
-
始终使用明确的
JOIN语法。切勿在FROM子句中使用逗号。两者在语法上是等价的,但显式连接更清晰、更强大。 -
还要注意,从 MySQL 5.0.12 开始,隐式连接逗号
,运算符的优先级低于显式连接(包括CROSS JOIN)。这可能会影响查询的结果,这些查询在没有使用括号()的明确优先级的情况下连接表——例如见here。
标签: mysql comma cross-join