1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

個人用備忘録:SELECT文がパワーアップ!JOINで必要な情報を引き出す方法を体系的にまとめてみた

Posted at

はじめに

データベースを扱う上で欠かせないのが「結合(JOIN)」です。

特にMySQLなどのリレーショナルデータベースでは、複数のテーブルを結びつけて必要なデータを取り出すことがよくあります。

この記事では、よく使われる内部結合(INNER JOIN)と外部結合(OUTER JOIN)について、図解と実例を交えながら解説します。


結合とは?

結合(JOIN)とは、複数のテーブルを特定の条件で結びつけて、ひとつの結果セットとして扱うことです。

個人の備忘録程度の走り書きとなっておりますが、温かい目で見守っていただければ幸いです。

例えば「ユーザー情報」と「注文情報」が別のテーブルにある場合、それらをつなぎ合わせて「誰が何を注文したか」を一覧にしたいことがあります。


内部結合(INNER JOIN)

特徴

  • 両方のテーブルに存在するデータのみ取得
  • 結合条件を満たさない行は結果に含まれない

構文

SELECT *
FROM users
INNER JOIN orders ON users.id = orders.user_id;

users テーブル

id name
1 Alice
2 Bob
3 Charlie

orders テーブル

user_id item
1 Book
2 Pen

結果

id name user_id item
1 Alice 1 Book
2 Bob 2 Pen

Charlie(id=3)は注文がないため、結果に含まれません。

参考文献


外部結合(OUTER JOIN)

外部結合は、片方のテーブルにしかないデータも含めたいときに使います。主に以下の2種類があります。

LEFT OUTER JOIN(左外部結合)

左側のテーブルのすべての行を取得し、右側に一致するものがなければNULL。

SELECT *
FROM users
LEFT JOIN orders ON users.id = orders.user_id;

結果

id name user_id item
1 Alice 1 Book
2 Bob 2 Pen
3 Charlie NULL NULL

RIGHT OUTER JOIN(右外部結合)

右側のテーブルのすべての行を取得し、左側に一致するものがなければNULL。

SELECT *
FROM users
RIGHT JOIN orders ON users.id = orders.user_id;

この場合は orders にしか存在しない行も取り出せます。

参考文献


使い分けのポイント

JOINの種類 取得される行 よく使う場面
INNER JOIN 両方のテーブルに存在するデータのみ 必要なデータを絞り込みたい時
LEFT OUTER JOIN 左のテーブルのすべて + 右の一致するデータ 左が「主」で右が「従」の場合
RIGHT OUTER JOIN 右のテーブルのすべて + 左の一致するデータ 右が主となる場合(使用頻度は少ない)

ON と USING の違い

ON は結合条件を自由に書ける

SELECT * FROM users INNER JOIN orders ON users.id = orders.user_id;

USING はカラム名が同じ場合に簡潔に書ける

SELECT * FROM users INNER JOIN orders USING (id);

まとめ

  • INNER JOIN:両方に存在するデータのみ
  • LEFT OUTER JOIN:左側はすべて+右があれば結合
  • RIGHT OUTER JOIN:右側はすべて+左があれば結合

結合を使いこなすことで、SQLの表現力がグッと上がります!まずは INNER JOIN と LEFT JOIN をしっかり使えるようになるのがオススメです!

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?