web-dev-qa-db-ja.com

ON条件なしでmysql JOINを使用する方法は?

ONステートメントなしで結合クエリを書くことは可能ですか?また、これらの結合の違いはLEFT JOIN, RIGHT JOINの仕組みです。

82
Alexander T.

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

ここに概要があります。 joinまたはinner joinを使用する場合、on条件はオプションです。これは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は、そのレベルの議論には適切な場所ではありません。

119
Gordon Linoff

http://www.sitepoint.com/understanding-sql-joins-mysql-database/ の例を参照してください

クエリのように「ON」の代わりに「USING」を使用できます

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

また、1つの出力に複数のテーブルを結合するUNIONの使用を調査することもできます。 SQL-1つの出力に2つのテーブルを結合

1
TARKUS