我可以使用没有条件的MySQL JOIN?
我无法学习如何使用JOIN。 我总是使用服务器端代码来实现这样的目标。 没有ON
可以写连接查询吗? 基本上这些联接是如何不同的左join,右join他们在我的例子做同样的事情。
MySQL 文档涵盖了这个主题。
这是一个简介。 当使用join
或inner join
, on
条件是可选的。 这与ANSI标准不同,几乎与其他任何数据库不同。 效果是一个cross join
。 同样,可以使用带有cross join
的on
子句,这也与标准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 – 将两个表合并为一个输出