在我的MySQL中,使用单词JOIN或使用:table1.id = table2.id之间的区别是什么

时间:2012-02-08 15:45:39

标签: mysql join union inner-join

在我的MySQL中,使用单词JOIN或使用单词有什么区别:table1.id = table2.id

Table 1
id  name
1   John Lennon

Table 2
id  position
1   Singer

//然后调用JOIN有什么区别?

Select name, position
From Table1, Table2
Where Table1.id=Table2.id;

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

来自manual

  

INNER JOIN和(逗号)在没有的情况下在语义上是等价的   连接条件:两者之间产生笛卡尔积   指定的表(即第一个表中的每一行都是   加入第二个表格中的每一行。)

     

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

答案 2 :(得分:1)

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

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

此外,如果您使用隐式连接语法,如果您忘记链接WHERE子句中的表,很容易以偶然的交叉连接结束。