結合(left join と right join) の違いを以前まとめましたけど・・・結合ってこれだけじゃないんですよね・・・というわけで、今更ですが!!
どの結合はどうなるのか毎回調べてる自分のために、分かりやすくまとめたよ!!
サンプル画像のテーブルについて
以下のようなテーブルでやってみてます。
内部結合(INNER JOIN)
カラム同士を結合する
SELECT * FROM テーブル1 INNER JOIN テーブル2
ONで結合規則を付けると、カラムの値が一致するデータのみ取得
SELECT * FROM テーブル1 INNER JOIN テーブル2 ON テーブル1のカラム = テーブル2のカラム
CROSS JOIN ~ ON 結合規則 でも同じ結果が出せます
SELECT * FROM テーブル1 CROSS JOIN テーブル2 ON テーブル1のカラム = テーブル2のカラム
外部結合(OUTER JOIN)
カラムの値が一致しないものも取得
SELECT * FROM テーブル1 LEFT OUTER JOIN テーブル2 ON テーブル1のカラム = テーブル2のカラム
ON 結合条件なしだとエラーになる
交差結合(CROSS JOIN)
テーブル1の各行に、テーブル2の全ての行を結合して表示する。
テーブル1(の行数)×テーブル2(の行数)が表示されます。
SELECT * FROM テーブル1 CROSS JOIN テーブル2
和結合(UNION)
テーブルとテーブルの、重複しない行を表示
重大な条件・・・列数が同じであること!!
型などは問わず、列数が同じであればOK。
SELECT * FROM テーブル1 UNION SELECT * FROM テーブル2
UNIONの後に、オプションつけれる。
ALL・・・重複も表示
DISTINCT・・・重複は削除(デフォルトはコレ)