ON条件なしでmysql JOINを使用するにはどうすればよいですか?


107

ONステートメントなしで結合クエリを書くことは可能ですか?そしてどのようにこれらは異なる参加しないLEFT JOIN, RIGHT JOIN作品を。


1
ON句はサーバーにテーブルがどのように関連しているかを伝えますので、違います。さまざまな結合タイプがすべて同じ結果をもたらす場合は、どういうわけか間違っているので、コードを追加すると問題を特定するのに役立ちます。その間、Jeff Atwoodのブログにアクセスして、さまざまな結合の種類を2分間紹介してください。
fvu 2013年

回答:


153

MySQLのドキュメントはこのトピックをカバーしています。

あらすじです。joinまたはを使用する場合inner joinon条件はオプションです。これはANSI標準とは異なり、他のほとんどのデータベースとも異なります。効果はcross joinです。同様に、でon句を使用できますがcross join、これも標準SQLとは異なります。

クロス結合は、デカルト積を作成します。つまり、最初のテーブルの1行と2番目のテーブルの1行の可能なすべての組み合わせです。3行( 'a'、 'b'、および 'c')のテーブルと4行(たとえば、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
今日まで、クロスジョインやクロスジョインについて聞いたことがない...
goneos


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.