MySQL JOIN タイプの違いを深く理解する
MySQL の JOIN 句を使用すると、共通のフィールド値を一致させることで複数のテーブルのデータを結合できます。ユースケースに応じて、いくつかの JOIN タイプを使用できます:
INNER JOIN (内部接続)
INNER JOIN は、両方のテーブルに一致がある場合にのみ行を返します。交差集合演算を実行し、両方のテーブルに属するレコードを取得します。
LEFT JOIN (左結合)
LEFT JOIN は、右側のテーブルに一致する行があるかどうかに関係なく、左側のテーブルのすべての行を返します。右側のテーブルで欠落している一致を NULL 値で埋めます。
RIGHT JOIN (右結合)
RIGHT JOIN は LEFT JOIN に似ていますが、左側のテーブルのすべての行ではなく、右側のテーブルのすべての行を返します。同様に、NULL 値は、左側のテーブルで一致しないものを表すために使用されます。
FULL JOIN (完全接続)
FULL JOIN は、LEFT 外部結合と RIGHT 外部結合の結果を結合し、両方のテーブルのすべての行を返します。どちらのテーブルでも一致しない行には NULL 値が設定されます。
例
次のデータが含まれる 2 つのテーブル TableA と TableB について考えます。
<code>**TableA** | id | firstName | lastName | |---|---|---| | 1 | arun | prasanth | | 2 | ann | antony | | 3 | sruthy | abc | **TableB** | id2 | age | Place | |---|---|---| | 1 | 24 | kerala | | 2 | 24 | usa | | 3 | 25 | ekm | | 5 | 24 | chennai |</code>
内部結合の例
<code class="language-sql">SELECT * FROM TableA INNER JOIN TableB ON TableA.id = TableB.id2;</code>
結果:
firstName | lastName | age | Place |
---|---|---|---|
arun | prasanth | 24 | kerala |
ann | antony | 24 | usa |
sruthy | abc | 25 | ekm |
左結合の例
<code class="language-sql">SELECT * FROM TableA LEFT JOIN TableB ON TableA.id = TableB.id2;</code>
結果:
firstName | lastName | age | Place |
---|---|---|---|
arun | prasanth | 24 | kerala |
ann | antony | 24 | usa |
sruthy | abc | 25 | ekm |
右結合の例
<code class="language-sql">SELECT * FROM TableA RIGHT JOIN TableB ON TableA.id = TableB.id2;</code>
結果:
FULL JOIN の例 (MySQL は直接 FULL JOIN をサポートしていないため、UNION を使用してシミュレートする必要があります)
MySQL は FULL JOIN を直接サポートしていません。FULL JOIN の効果をシミュレートするには、LEFT JOIN
と RIGHT JOIN
を UNION
と組み合わせて使用する必要があります。
上記の例を通して、異なる JOIN タイプ間でのデータ結合の違いが明確にわかります。必要なデータを効率的に取得するには、適切な JOIN タイプを選択することが重要です。
以上がMySQL における INNER、LEFT、RIGHT、および FULL 結合はどのように異なりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。