我可以使用没有条件的MySQL JOIN?

我无法学习如何使用JOIN。 我总是使用服务器端代码来实现这样的目标。 没有ON可以写连接查询吗? 基本上这些联接是如何不同的左join,右join他们在我的例子做同样的事情。

MySQL 文档涵盖了这个主题。

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

交叉连接创build了一个笛卡尔积 – 也就是说,从第一个表格到第二个表格的每一行的每一个可能的组合。 具有三行('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子句是右外连接或左外连接所必需的,因此讨论与他们无关。

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

请参阅http://www.sitepoint.com/understanding-sql-joins-mysql-database/中的一些示例;

在查询中可以使用'USING'而不是'ON'

 SELECT * FROM table1 LEFT JOIN table2 USING (id); 

您可能还想调查使用UNION,它将多个表合并为一个输出: SQL – 将两个表合并为一个输出