Answers:
MySQL 文档涵盖了该主题。
这是一个简介。使用join
或时inner join
,on
条件是可选的。这与ANSI标准不同,并且与几乎所有其他数据库不同。效果是cross join
。同样,您可以使用带有的on
子句cross join
,该子句也与标准SQL不同。
交叉联接将创建笛卡尔乘积-即,第一个表的第一行和第二个表的第一行的每种可能组合。具有三行('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不合适。
参见http://www.sitepoint.com/understanding-sql-joins-mysql-database/中的一些示例
您可以在查询中使用“ USING”而不是“ ON”
SELECT * FROM table1 LEFT JOIN table2 USING (id);
ON
子句告诉服务器,表如何关联,不可以。如果不同的联接类型都给出相同的结果,则说明您在某种程度上做错了,添加一些代码可以帮助我们发现您的问题。同时,前往Jeff Atwood的博客,进行2分钟的介绍,介绍不同的联接类型。