ホームページ >データベース >mysql チュートリアル >SQL 結合とユニオンは、複数のテーブルからデータを取得して結合するのにどのように役立ちますか?
効率的なデータ取得のための SQL 結合とユニオンのマスター
このガイドでは、SQL 結合とユニオンが複数のテーブルからデータを効率的に取得して結合する方法について説明します。
パート 1: 結合と共用体を理解する
SQL 結合は、共有列に基づいて複数のテーブル間でデータを取得するための基本です。 いくつかの結合タイプが存在します:
SQL ユニオンは複数の SELECT
ステートメントの結果を結合し、デフォルトで重複行を排除します。 UNION ALL
を使用すると、重複が保持されます。
例:
cars
、models
、colors
テーブルを含む例を示してみましょう。
例 1: 内部結合
スポーツ カーの ID を取得するには (model
ID 1 がスポーツ カーを表すと仮定します):
<code class="language-sql">SELECT a.ID, b.model FROM cars a INNER JOIN models b ON a.model = b.ID WHERE b.ID = 1;</code>
車の色を追加するには、別の結合が必要です:
<code class="language-sql">SELECT a.ID, b.model, c.color FROM cars a INNER JOIN models b ON a.model = b.ID INNER JOIN colors c ON a.color = c.ID WHERE b.ID = 1;</code>
例 2: 結合
スポーツカー (モデル ID 1) と 4WD (モデル ID 3) を組み合わせるには:
<code class="language-sql">SELECT a.ID, b.model, c.color FROM cars a INNER JOIN models b ON a.model = b.ID INNER JOIN colors c ON a.color = c.ID WHERE b.ID = 1 UNION SELECT a.ID, b.model, c.color FROM cars a INNER JOIN models b ON a.model = b.ID INNER JOIN colors c ON a.color = c.ID WHERE b.ID = 3;</code>
例 3: 外部結合
車のないブランドも含め、すべてのブランドとその車両数をリストするには (左外部結合を使用):
<code class="language-sql">SELECT a.brand, COUNT(b.id) AS countOfBrand FROM brands a LEFT OUTER JOIN cars b ON a.ID = b.brand GROUP BY a.brand;</code>
例 4: INTERSECT のシミュレーション (MySQL)
INTERSECT
は広くサポートされていないため、(MySQL の場合) 結合を使用した回避策は次のようになります (この例は、特定のテーブル構造と必要な交差基準に基づいて調整する必要があります)。
<code class="language-sql"> SELECT a.ID, a.color, a.paint FROM colors a INNER JOIN colors b ON a.ID = b.ID WHERE a.ID > 2 AND b.ID -- Replace with your actual intersection condition ``` (Note: This example is a placeholder and requires adaptation to a real-world scenario to be meaningful.) This demonstrates the power of joins and unions for efficient data manipulation in SQL. Remember to adapt these examples to your specific database schema and requirements.</code>
以上がSQL 結合とユニオンは、複数のテーブルからデータを取得して結合するのにどのように役立ちますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。