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

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

商品名

カテゴリ名

コーラ

飲料

チョコレート

菓子

 

LEFT JOIN

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

 

実行結果(LEFT JOIN

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

商品名

カテゴリ名

コーラ

飲料

チョコレート

菓子

鶏肉

NULL

 

RIGHT JOIN

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

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

 

実行結果(RIGHT JOIN

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

商品名

カテゴリ名

コーラ

飲料

チョコレート

菓子

NULL

野菜

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

Smallitのサービス