What's the difference between comma separated joins and join on syntax in MySQL?
例如,如果我有一个表"person",其列"id"引用表"worker"中的列"id"
这两个查询之间的区别是什么?它们产生相同的结果。
和
号
谢谢
完全没有区别。
第二种表示形式使查询更具可读性,并使查询看起来非常清楚哪个联接对应于哪个条件。
这些查询在逻辑上是等价的。逗号运算符等价于
逗号是旧样式的联接运算符。join关键字是在后面添加的,因为它还允许外部联接操作,所以比较受欢迎。
它还允许将连接谓词(条件)与
跟进
此答案表示问题中的两个查询是等效的。在同一个查询中,我们不应该将旧的join操作逗号语法与新的
摘自MySQL参考手册
https://dev.mysql.com/doc/refman/5.6/en/join.html网站
INNER JOIN and, (comma) are semantically equivalent in the absence of a join condition: both produce a Cartesian product between the specified tables (that is, each and every row in the first table is joined to each and every row in the second table).However, the precedence of the comma operator is less than that of
INNER JOIN ,CROSS JOIN ,LEFT JOIN , and so on. If you mix comma joins with the other join types when there is a join condition, an error of the formUnknown column 'col_name' in 'on clause' may occur. Information about dealing with this problem is given later in this section.
号
除了可读性更好之外,还有一种情况是显式联接的表更好,而不是逗号分隔的表。
让我们看一个例子:
1 2 3 4 5 6 7 8 9 10 11 |
下面的查询将给出两个表中的所有列和行
号
下面的查询将给出表别名为"table2"的第一个表中的列
如果您错误地忘记了逗号分隔联接中的逗号,则第二个表将自动转换为第一个表的表别名。并非所有情况下都如此,但有可能出现这种情况
使用连接使代码更容易阅读,因为它是不言而喻的。
在速度上没有区别(我测试过),执行计划是相同的
如果查询优化器做得很好,那么这些查询之间应该没有区别。它们只是指定相同期望结果的两种方法。
但是,在数据库中,它们最终是相同的