ON
ステートメントなしで結合クエリを書くことは可能ですか?また、これらの結合の違いはLEFT JOIN, RIGHT JOIN
の仕組みです。
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は、そのレベルの議論には適切な場所ではありません。
http://www.sitepoint.com/understanding-sql-joins-mysql-database/ の例を参照してください
クエリのように「ON」の代わりに「USING」を使用できます
SELECT * FROM table1 LEFT JOIN table2 USING (id);
また、1つの出力に複数のテーブルを結合するUNIONの使用を調査することもできます。 SQL-1つの出力に2つのテーブルを結合