如何在没有ON条件的情况下使用mysql JOIN?


107

是否可以编写不带ON语句的联接查询?以及这些连接有何不同之处LEFT JOIN, RIGHT JOIN


1
正如该ON子句告诉服务器,表如何关联,不可以。如果不同的联接类型都给出相同的结果,则说明您在某种程度上做错了,添加一些代码可以帮助我们发现您的问题。同时,前往Jeff Atwood的博客,进行2分钟的介绍,介绍不同的联接类型。
2013年

Answers:


153

MySQL 文档涵盖了该主题。

这是一个简介。使用join或时inner joinon条件是可选的。这与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不合适。


1
直到今天都没有听说过交叉连接或需要使用交叉连接!
os's 19-10-29


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.