よく使いそうな JOIN句の基本構文。
このようなテーブルがあったとする
a_table
- id
- name
b_table
- id
- a_table_id
- name
このようなデータがあったとする
a_table
INSERT INTO `a_table` (`id`, `name`) VALUES
(1, 'あ'),
(2, 'い'),
(3, 'う'),
(4, 'え'),
(5, 'お');
b_table
INSERT INTO `b_table` (`id`, `a_table_id`, `name`) VALUES
(1, 3, 'three'),
(2, 5, 'five'),
(3, 3, 'three 2'),
(4, 100, 'one hundred');
INNER JOIN
条件(a.id = b.a_table_id)を満たすレコードのみを対象にする。
SELECT a.*, b.a_table_id, b.name as b_name
FROM a_table as a
INNER JOIN b_table as b ON a.id = b.a_table_id
WHERE 1;
結果
| id | name | a_table_id | b_name |
|---|---|---|---|
| 3 | う | 3 | three |
| 5 | お | 5 | five |
| 3 | う | 3 | three 2 |
LEFT OUTER JOIN (LEFT JOIN)
左側のテーブル(a_table)を基準にして、
テーブルを結合する。
結合した結果、
一致しないデータ箇所は NULL になる。
SELECT a.*, b.a_table_id, b.name as b_name
FROM a_table as a
LEFT OUTER JOIN b_table as b ON a.id = b.a_table_id
WHERE 1;
結果
| id | name | a_table_id | b_name |
|---|---|---|---|
| 1 | あ | NULL | NULL |
| 2 | い | NULL | NULL |
| 3 | う | 3 | three 2 |
| 3 | う | 3 | three |
| 4 | え | NULL | NULL |
| 5 | お | 5 | five |
RIGHT OUTER JOIN (RIGHT JOIN)
右側のテーブル(b_table)を基準にして、
テーブルを結合する。
結合した結果、
一致しないデータ箇所は NULL になる。
SELECT a.*, b.a_table_id, b.name as b_name
FROM a_table as a
RIGHT OUTER JOIN b_table as b ON a.id = b.a_table_id
WHERE 1;
結果
| id | name | a_table_id | b_name |
|---|---|---|---|
| 3 | う | 3 | three |
| 5 | お | 5 | five |
| 3 | う | 3 | three 2 |
| NULL | NULL | 100 | one hundred |