SQL

SQLのINNER JOINとLEFT JOINの違い

今回はINNER JOINとLEFT JOINの違いについてのメモになります。

使用テーブル

usersテーブル(ユーザー情報)を下記とします。

idname
1アリス
2ボブ
3キャサリン

ordersテーブル(注文情報)を下記とします。

iduser_idproduct
11iphone
22アンドロイド
32ipad

INNER JOIN

テーブル間に一致するデータがある場合は取得します。

下記のSQLを例に考えます。

SELECT users.id, users.name, orders.product 
FROM users
INNER JOIN orders ON users.id = orders.user_id;

結果は下記になります。

idnameproduct
1アリスiphone
2ボブアンドロイド
2ボブipad

usersテーブルのid=3のレコードの情報はordersテーブルのuser_idカラムの値に3がないので取得できません。

LEFT JOIN

テーブル間に一致するデータがなくても取得します。

下記のSQLを例に考えます。

SELECT users.id, users.name, orders.product 
FROM users
LEFT JOIN orders ON users.id = orders.user_id;

結果は下記になります。

idnameproduct
1アリスiphone
2ボブアンドロイド
2ボブipad
3キャサリンNULL

usersテーブルのnameカラムの値がキャサリンに対応するordersテーブルのレコードはありませんがこの場合はproductカラムの値はNULLになります。