- 開発技術
SQLのJOINの違いを理解しよう
- SQL基礎

はじめに
【エンジニア募集中】フルリモート可◎、売上/従業員数9年連続UP、平均残業8時間、有給取得率90%、年休124日以上 etc. 詳細はこちらから>
SQLで複数のテーブルを組み合わせてデータを取得する際に使用するのが「JOIN」です。
しかし、JOINにはいくつか種類があり、取得できるデータもそれぞれ異なります。
今回は、サンプルデータを用いてそれぞれの違いを紹介します。
サンプルデータ
カテゴリテーブル
|
カテゴリID |
カテゴリ名 |
|
1 |
飲料 |
|
2 |
菓子 |
|
3 |
野菜 |
商品テーブル
|
商品ID |
カテゴリID |
商品名 |
|
1001 |
1 |
コーラ |
|
1002 |
2 |
チョコレート |
|
1003 |
4 |
鶏肉 |
INNER JOIN
INNER JOINは両方のテーブルに存在するデータのみを取得します。
|
1 2 3 4 5 6 |
SELECT A.商品名, B.カテゴリ名 FROM 商品テーブル A INNER JOIN カテゴリテーブル B ON A.カテゴリID = B.カテゴリID |
実行結果(INNER JOIN)
商品ID:1003のデータのカテゴリIDはカテゴリテーブルに存在しないため、取得されていません。
|
商品名 |
カテゴリ名 |
|
コーラ |
飲料 |
|
チョコレート |
菓子 |
LEFT JOIN
LEFT JOINは左側のテーブルのデータをすべて取得します。
|
1 2 3 4 5 6 |
SELECT A.商品名, B.カテゴリ名 FROM 商品テーブル A –- 左テーブル LEFT JOIN カテゴリテーブル B -- 右テーブル ON A.カテゴリID = B.カテゴリID |
実行結果(LEFT JOIN)
商品ID:1003のデータも取得され、カテゴリ名はNULLになります。
|
商品名 |
カテゴリ名 |
|
コーラ |
飲料 |
|
チョコレート |
菓子 |
|
鶏肉 |
NULL |
RIGHT JOIN
RIGHT JOINは右側のテーブルのデータをすべて取得します。
RIGHT JOINはテーブルの順番を入れ替えてLEFT JOINで書き換えられるため、実務ではLEFT JOINが使用されることが多いです。
|
1 2 3 4 5 6 |
SELECT A.商品名, B.カテゴリ名 FROM 商品テーブル A –- 左テーブル RIGHT JOIN カテゴリテーブル B -- 右テーブル ON A.カテゴリID = B.カテゴリID |
実行結果(RIGHT JOIN)
カテゴリID:3のデータも取得され、商品名はNULLになります。
|
商品名 |
カテゴリ名 |
|
コーラ |
飲料 |
|
チョコレート |
菓子 |
|
NULL |
野菜 |
【エンジニア募集中】フルリモートも◎(リモート率85.7%)、平均残業8時間、年休124日以上、有給取得率90% etc. 詳細はこちらから>



