【SQL】INNER JOINとLEFT JOIN
INNER JOINとLEFT JOINの使い方を簡単に説明
RIGHT JOINはほぼ使わないので説明しません。
JOINはテーブル同士を結合するもの。
結合元と結合先のテーブルに存在する同じ項目(キー項目)が
一致するレコード同士をくっつける。
INNERとLEFTはくっつけ方が異なる。
内部だ外部だは今は考えなくていいです。
気になる人だけ調べてください
実際に手を動かしたい人は以下のテーブルを作ってください
--テーブル作成 CREATE TABLE A( ID VARCHAR(3) NOT NULL ,NAME VARCHAR(10) NOT NULL ) CREATE TABLE B( ID VARCHAR(3) NOT NULL ,NAME VARCHAR(10) NOT NULL --データ挿入 INSERT INTO A VALUES ('001', 'ONE'), ('002', 'TWO'), ('003', 'THREE') INSERT INTO B VALUES ('003', 'THREE'), ('004', 'FOUR'), ('005', 'FIVE')
INNER JOIN
まずはINNER JOINから理解したほうがLEFT JOINを理解しやすいと思います。
INNER JOINはキー項目が一致するレコードのみくっつけて表示します。
SELECT * FROM A SELECT * FROM B SELECT * FROM A AS A INNER JOIN B AS B ON A.ID = B.ID
このクエリを実行すると以下の実行結果となります。
ON句で指定した互いのテーブルの項目「ID」が一致しているレコードのみ結合されました。
結果は一致したレコードのみ出力されます。
これがINNER JOINです。
LEFT JOIN
LEFT JOINもINNER JOINと同様、一致したレコードが結合されて出力されます。
異なる点は、キー項目が一致しない結合元テーブルのレコードも出力される点です。
SELECT * FROM A SELECT * FROM B SELECT * FROM A AS A LEFT JOIN B AS B ON A.ID = B.ID SELECT * FROM B AS B LEFT JOIN A AS A ON A.ID = B.ID
クエリ実行結果が以下となります。
IDが一致しないレコードはNULLの状態で結合元テーブルのレコードが
すべて出力されているのがおわかりでしょうか。
まとめ
キー項目が一致するレコードのみ出力するのがINNER JOIN。
一致しようがしまいが、結合元テーブルのレコードをすべて出力するのがLEFT JOIN。