mySQL

【mySQL】様々な結合を分かりやすくまとめた!これで使い分けは完璧(なハズ)!

MySQLの結合各種

結合(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]

内部結合 INNER JOIN

CROSS JOIN ~ ON 結合規則 でも同じ結果が出せます

[sql]
SELECT * FROM テーブル1 CROSS JOIN テーブル2 ON テーブル1のカラム = テーブル2のカラム
[/sql]

内部結合はCROSS JOINでも同じ結果が出せる

外部結合(OUTER JOIN)

カラムの値が一致しないものも取得

[sql]
SELECT * FROM テーブル1 LEFT OUTER JOIN テーブル2 ON テーブル1のカラム = テーブル2のカラム
[/sql]

外部結合 OUTER JOIN

ON 結合条件なしだとエラーになる

外部結合 条件規則なしはエラー

交差結合(CROSS JOIN)

テーブル1の各行に、テーブル2の全ての行を結合して表示する。

テーブル1(の行数)×テーブル2(の行数)が表示されます。

[sql]
SELECT * FROM テーブル1 CROSS JOIN テーブル2
[/sql]

交差結合 CROSS JOIN

和結合(UNION)

テーブルとテーブルの、重複しない行を表示

重大な条件・・・列数が同じであること!!
型などは問わず、列数が同じであればOK。
和結合UNIONの条件

[sql]
SELECT * FROM テーブル1
UNION
SELECT * FROM テーブル2
[/sql]

UNIONの後に、オプションつけれる。
ALL・・・重複も表示
DISTINCT・・・重複は削除(デフォルトはコレ)
和結合 UNION

  • この記事を書いた人

サオリサン

WEB制作のディレクター・制作・運営支援をしてます(フリーランス&会社員)。アクセス解析してサイト改善するのが好き。

-mySQL