mySQL

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

MySQLの結合各種

結合(left join と right join) の違いを以前まとめましたけど・・・結合ってこれだけじゃないんですよね・・・というわけで、今更ですが!!
どの結合はどうなるのか毎回調べてる自分のために、分かりやすくまとめたよ!!

サンプル画像のテーブルについて

以下のようなテーブルでやってみてます。
サンプルで使ったテーブル

内部結合(INNER JOIN)

カラム同士を結合する

SELECT * FROM テーブル1 INNER JOIN テーブル2

内部結合 条件規則なし

ONで結合規則を付けると、カラムの値が一致するデータのみ取得

SELECT * FROM テーブル1 INNER JOIN テーブル2 ON テーブル1のカラム = テーブル2のカラム

内部結合 INNER JOIN

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

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

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

外部結合(OUTER JOIN)

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

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

外部結合 OUTER JOIN

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

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

交差結合(CROSS JOIN)

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

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

SELECT * FROM テーブル1 CROSS JOIN テーブル2

交差結合 CROSS JOIN

和結合(UNION)

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

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

SELECT * FROM テーブル1
UNION
SELECT * FROM テーブル2

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

  • この記事を書いた人
アバター画像

サオリサン

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

-mySQL