LoginSignup
1
0

複数のデータを結合するSQLクエリ

Last updated at Posted at 2019-08-09

こんにちは。
未来電子テクノロジーのインターン生です。(2020年1月退社)
今回は複数のデータを結合するSQLクエリについて書いていきます。

例として、下の二つの表MembersTestScoresを結合する場合を考えます。

Table: Members

Name Sex Age
Tom Male 18
Kate Female 31
Susie Female 43
Sam Male 22

Table: TestScores

Name English Math
Tom 54 76
Susie 65 25
Sam 48 92

データ間で対応している行だけを結合する場合

両データの対応している行(上の例の場合、TomSusieSamの3行)のみを結合する場合、INNER JOINを用いて、下のようなコードを書きます。

members.sql
SELECT *
FROM Members
INNER JOIN TestScores
ON Members.Name = TestScores.Name;

実行結果は以下のようになります。

Name Sex Age English Math
Tom Male 18 54 76
Susie Female 43 65 25
Sam Male 22 48 92

TestScoresにはKateの行がありませんので、Kateの行は切り落とされます。

データ間で対応していない行も結合する場合

Kateの行も含めて結合するには、LEFT JOINを使います。

members.sql
SELECT *
FROM Members
LEFT JOIN TestScores
ON Members.Name = TestScores.Name;

上のように書くと、以下の実行結果が得られます。

Name Sex Age English Math
Tom Male 18 54 76
Kate Female 31
Susie Female 43 65 25
Sam Male 22 48 92

TestScoresの中にはKateの行がありませんが、Kateの行も結合されました。
このとき、LEFT JOINは、左側の表のすべての行を残し、右側の表の対応する行を結合します。この際、右側の表の中に対応する行がない場合、その部分は空白で埋められます。
RIGHT JOINはその逆です。
FULL JOINは、両側の表にあるすべての行を残して結合します。

まとめ

今回は、SQLで複数の表を、JOINを用いて結合するクエリについてまとめました。
もし間違いなどがありましたら、訂正しますので、ご指摘のほどよろしくお願いいたします。

1
0
2

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
0