2013-05-09 20 views
57

是否可以在没有ON声明的情况下编写连接查询?以及这些连接如何不同LEFT JOIN, RIGHT JOIN的作品。如何在没有开启条件的情况下使用mysql JOIN?

+0

由于“ON”子句告诉服务器表是如何相关的,所以没有。如果你的不同连接类型都给出相同的结果,那么你会以某种方式做错,并且添加一些代码可以帮助我们发现你的问题。同时,请转到[Jeff Atwood的博客](http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html)2分钟介绍不同的连接类型。 – fvu 2013-05-09 21:04:40

回答

84

MySQL documentation涵盖了这个主题。

这里是一个简介。当使用joininner join时,on条件是可选的。这与ANSI标准不同,几乎与其他任何数据库不同。效果是cross join。同样,您可以使用on子句与cross join,这也与标准SQL不同。

交叉连接创建一个笛卡尔积 - 也就是说,从第一个表格开始的1行和从第二个开始的1行的每个可能的组合。具有三行('a','b'和'c')以及具有四行(例如1,2,3,4)的表的交叉连接将具有12行。

在实践中,如果你想要做一个交叉连接,然后使用cross join

from A cross join B 

比要好得多:

from A, B 

和:

from A join B -- with no on clause 

on子句是右外连接或左外连接所必需的,因此讨论是不相关的为他们。

如果您需要了解不同类型的连接,那么您需要对关系数据库进行一些研究。 Stackoverflow不适合讨论这个级别。

相关问题