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