2012-02-08 44 views

回答

1

只要只有两个表格就没有。如果使用逗号分隔表格,则可能会得到与预期不同的JOIN顺序。

manual

INNER JOIN和,(逗号)是在不存在的 语义上等价连接条件:既产生 指定的表之间的笛卡尔乘积(即,每行在第一个表中是 连接到第二个表中的每一行)。

但是,逗号运算符的优先级小于INNER JOIN,CROSS JOIN,LEFT JOIN等。如果在存在连接条件时将逗号连接与 混合在其他连接类型中,则可能会发生 形式的错误,该形式为'on子句'中的未知列'col_name'。有关处理这个问题的信息 在本节后面给出。

+0

让我再添加一个表,看看你会说什么 – stackoverflow 2012-02-08 15:49:01

1

如果这种情况下没有区别。 但是连接也可以是:INNER,OUTER(左外,右外,全外连接),左,右。

1

使用JOIN被称为“显式连接”,或ANSI加入...用逗号分隔的表,然后将它们连接起来的WHERE子句中称为“隐式连接”。

ANSI连接被广泛认为是首选语法。当你需要开始添加外连接时,它更容易遵循,不太模糊,并且更加一致。

此外,如果使用隐式连接语法,如果忘记链接WHERE子句中的表,则很容易发生意外交叉连接。

相关问题