SQLのJOINの違いを理解しよう

 

はじめに

【エンジニア募集中】フルリモート可◎、売上/従業員数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は両方のテーブルに存在するデータのみを取得します。

 

実行結果(INNER JOIN)

商品ID:1003のデータのカテゴリIDはカテゴリテーブルに存在しないため、取得されていません。

商品名

カテゴリ名

コーラ

飲料

チョコレート

菓子

 

LEFT JOIN

LEFT JOINは左側のテーブルのデータをすべて取得します。

 

実行結果(LEFT JOIN)

商品ID:1003のデータも取得され、カテゴリ名はNULLになります。

商品名

カテゴリ名

コーラ

飲料

チョコレート

菓子

鶏肉

NULL

 

RIGHT JOIN

RIGHT JOINは右側のテーブルのデータをすべて取得します。

RIGHT JOINはテーブルの順番を入れ替えてLEFT JOINで書き換えられるため、実務ではLEFT JOINが使用されることが多いです。

 

実行結果(RIGHT JOIN)

カテゴリID:3のデータも取得され、商品名はNULLになります。

商品名

カテゴリ名

コーラ

飲料

チョコレート

菓子

NULL

野菜

【エンジニア募集中】フルリモートも◎(リモート率85.7%)、平均残業8時間、年休124日以上、有給取得率90% etc. 詳細はこちらから>

Smallitのサービス