「駑馬十駕」を信念に IT系情報を中心に調べた事をコツコツ綴っています。

SQLで複数のテーブルを結合してデータを取得したい場合、欠かせないのが「JOIN」構文です。しかし、INNER・LEFT・RIGHT・FULLと種類が多く、「どれを選べば良いかわからない…」という悩みをよく聞きます。

本記事では、各JOINの違いを図解付きでわかりやすく解説します。


✅JOINとは?

JOINとは、複数のテーブルを条件に基づいて結び付ける操作です。
たとえば、「社員テーブル」と「部署テーブル」を組み合わせて、社員名と部署名を一覧表示するといったケースが典型例です。


✅テスト用テーブル(例)

社員テーブル(employees)部署テーブル(departments)
emp_idemp_namedept_id
1佐藤10
2鈴木20
3高橋30
4田中40

✅1. INNER JOIN(内部結合)

👉 両方のテーブルで一致するデータのみ取得

✅結果(部署が存在するデータだけ表示)

emp_namedept_name
佐藤営業
鈴木開発
高橋総務

❌部署IDが40の田中さんは表示されません。


✅2. LEFT JOIN(左外部結合)

👉 左側テーブル(employees)を基準に、マッチしない行も取得

✅結果(左基準)

emp_namedept_name
佐藤営業
鈴木開発
高橋総務
田中NULL

✔部署がない社員も「NULL」として表示されます。


✅3. RIGHT JOIN(右外部結合)

👉 右側テーブル(departments)を基準にマッチしない行も取得

✅結果(右基準)

emp_namedept_name
佐藤営業
鈴木開発
高橋総務

※部署側に存在しない社員は現れません。


✅4. FULL JOIN(完全外部結合)

👉 両テーブルのすべての行を対象に、合致しないデータも含めて取得

✅結果(両方)

emp_namedept_name
佐藤営業
鈴木開発
高橋総務
田中NULL

💡※MySQLではFULL JOINは直接サポートされていないため、UNIONで代替します。


✅JOINの違いまとめ(図で理解)

JOIN種類取得範囲イメージ
INNER🎯一致する部分のみ
LEFT📘左テーブル全体+一致
RIGHT📙右テーブル全体+一致
FULL🌐両テーブルの全体

✅どれを使えば良い?

シーンオススメJOIN
双方の共通データだけ欲しいINNER JOIN
左側を優先して一覧取得したいLEFT JOIN
右側を基準にしたいRIGHT JOIN
すべてのデータを見たいFULL JOIN

✅まとめ

JOIN特徴
INNER共通する行のみ取得
LEFT左基準で関連しない行も取得
RIGHT右基準で関連しない行も取得
FULL両テーブル全体を包括

👉まずは INNER JOINを基本とし、
「欠けているデータを埋めたいとき」にLEFT/RIGHTを検討すると理解しやすいです。

Ads by Google

0 0
Article Rating
申し込む
注目する
guest
0 コメント一覧
最も古い
最新 高評価
インラインフィードバック
すべてのコメントを見る
0
あなたの考えが大好きです、コメントしてください。x