自分用のSQLチートシートです。
- Inner Joins
- Left Joins
使用するテーブル
paper_magazinテーブルスキーマ
name | type |
---|---|
id | INTEGER |
name | TEXT |
TEXT |
paper_magazinテーブルデータ
id | name | |
---|---|---|
1 | James | james@email.com |
2 | Matt | matt@email.com |
3 | Erin | erin@email.com |
4 | Chris | chris@email.com |
5 | Zan | zan@email.com |
online_magazinテーブルスキーマ
name | type |
---|---|
id | INTEGER |
name | TEXT |
TEXT |
online_magazinテーブルデータ
| id | name | email |
| :---: | :---: | :---: | :---: | :---: |
| 1 | James |james@email.com |
| 2 | Matt | matt@email.com |
| 3 | Erin | erin@email.com |
| 6 | Jason | jason@email.com |
| 7 | Curry | curry@email.com |
Inner Joins
JOIN
(inner joinと呼ばれている)を使って2つのテーブルを結合する場合はON
の条件に合う結果だけが得られます。
SELECT *
FROM paper_magazine
JOIN online_magazine
ON paper_magazine.id = online_magazine.id;
SQL結果
| id | name | email | id | name | email |
| :---: | :---: | :---: | :---: | :---: | :---: | :---: |
| 1 | James |james@email.com | 1 | James |james@email.com |
| 2 | Matt | matt@email.com | 2 | Matt | matt@email.com |
| 3 | Erin | erin@email.com | 3 | Erin | erin@email.com |
Left Joins
LEFT JOIN
はON
の条件に合わないものも含めて結合されるテーブルの全ての行を残します。
SELECT *
FROM paper_magazine
LEFT JOIN online_magazine
ON paper_magazine.id = online_magazine.id;
SQL結果
id | name | id | name | ||
---|---|---|---|---|---|
1 | James | james@email.com | 1 | James | james@email.com |
2 | Matt | matt@email.com | 2 | Matt | matt@email.com |
3 | Erin | erin@email.com | 3 | Erin | erin@email.com |
4 | Chris | chris@email.com | NULL | NULL | NULL |
5 | Zan | zan@email.com | NULL | NULL | NULL |