【SQL】INNER JOINとLEFT JOINと RIGHT JOINの違いをまとめた。
前提知識
メインテーブルと結合テーブルが存在する。
テーブルをJOIN(結合)するとき、どちらのテーブルをメイン(主)と捉えるかということ。
■内部結合(INNER JOIN)
1 2 3 |
SELECT * FROM メインテーブルA INNER JOIN 結合テーブルB ON メインテーブルA.キー = 結合テーブルB.キー |
⇒条件に一致しないレコードは取得しない。
両方のテーブルに存在するレコードだけ取得する。
⇒メインテーブルと結合テーブルとを入れ替えても、結果は変わらない。
■外部結合(OUTER JOIN)
どちらか片方のテーブルにデータがあればレコードが取得される。
以下の3種類ある。
①LEFT OUTER JOIN(左外部結合)
②RIGHT OUTER JOIN(右外部結合)
③FULL OUTER JOIN(完全外部結合)➱機会があったらまとめる
・LEFT OUTER JOIN
1 2 3 |
SELECT * FROM メインテーブルA LEFT OUTER JOIN 結合テーブルB ON メインテーブルA.キー = 結合テーブルB.キー |
左側に書いた方をメインテーブルにする
メインテーブルに存在するレコードは、結合テーブルに同じキーのレコードが無くても全て取得される。
結合テーブルだけにしか存在しないレコードは取得されない。
・ RIGHT OUTER JOIN
1 2 3 |
SELECT * FROM 結合テーブルB RIGHT OUTER JOIN メインテーブルA ON 結合テーブルB.キー = メインテーブルA.キー |
メインテーブルをJOINの右側に書く。
(LEFTと同じ)メインテーブルに存在するレコードは、結合テーブルに同じキーのレコードが無くても全て取得される。
(LEFTと同じ)結合テーブルだけにしか存在しないレコードは取得されない
■LEFT OUTER JOINとRIGHT OUTER JOINの使い分け
特に無し。
基本的に外部結合をする際は統一した方がいい。
文章は左から読むので、左をメインとする「LEFT OUTER JOIN」をメインで使おうかな。