SQL のクロス結合 (CROSS JOIN) と内部結合 (INNER JOIN): 包括的な比較
SQL には、CROSS JOIN と INNER JOIN という 2 つの異なる接続タイプが用意されており、各接続タイプには独自のアプリケーション シナリオがあります。この記事では、これら 2 種類の接続の違いを詳しく説明し、それぞれの利点と使用例に焦点を当てます。
クロス結合: デカルト積
クロス結合はデカルト積としても知られ、最初のテーブルのすべての行と 2 番目のテーブルのすべての行を結合します。これにより、結合されたテーブルの行の可能なすべての組み合わせを含む新しいテーブルが生成されます。
文法:
<code class="language-sql">SELECT * FROM Table1 CROSS JOIN Table2</code>
例:
「Customers」テーブルと「Movies」テーブルの間のクロス結合を考えてみましょう:
<code class="language-sql">SELECT Movies.CustomerID, Movies.Movie, Customers.Age, Customers.Gender, Customers.[Education Level], Customers.[Internet Connection], Customers.[Marital Status], FROM Customers CROSS JOIN Movies</code>
このクエリは、顧客と映画の考えられるすべての組み合わせを返すため、多数の行が生成されます。
内部結合: 結果を制限する
内部結合は、ON
句で指定された条件を満たす行のみを返します。両方のテーブルで値が一致する行のみが選択されます。
文法:
<code class="language-sql">SELECT * FROM Table1 INNER JOIN Table2 ON Table1.Column = Table2.Column</code>
例:
前と同じテーブルを使用して、CustomerID
列を使用して内部結合を作成しましょう:
<code class="language-sql">SELECT Movies.CustomerID, Movies.Movie, Customers.Age, Customers.Gender, Customers.[Education Level], Customers.[Internet Connection], Customers.[Marital Status] FROM Customers INNER JOIN Movies ON Customers.CustomerID = Movies.CustomerID</code>
このクエリは、'Customers' テーブルと 'Movies' テーブルから一致する CustomerID
行のみを返し、より関連性の高いフィルター処理された結果を提供します。
接続タイプを選択
クロス結合と内部結合の選択は、クエリの特定の要件によって異なります。
一般に、効率が高く、結果をフィルター処理できるため、内部結合を使用することをお勧めします。一方、クロス結合は、デカルト積が必要な特定のシナリオで役立ちます。
以上がSQL における CROSS JOIN と INNER JOIN: 各結合タイプをいつ使用するか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。