今回はINNER JOINとLEFT JOINの違いについてのメモになります。
Contents
使用テーブル
usersテーブル(ユーザー情報)を下記とします。
id | name |
1 | アリス |
2 | ボブ |
3 | キャサリン |
ordersテーブル(注文情報)を下記とします。
id | user_id | product |
1 | 1 | iphone |
2 | 2 | アンドロイド |
3 | 2 | ipad |
INNER JOIN
テーブル間に一致するデータがある場合は取得します。
下記のSQLを例に考えます。
SELECT users.id, users.name, orders.product
FROM users
INNER JOIN orders ON users.id = orders.user_id;
結果は下記になります。
id | name | product |
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;
結果は下記になります。
id | name | product |
1 | アリス | iphone |
2 | ボブ | アンドロイド |
2 | ボブ | ipad |
3 | キャサリン | NULL |
usersテーブルのnameカラムの値がキャサリンに対応するordersテーブルのレコードはありませんがこの場合はproductカラムの値はNULLになります。