【SQL】INNER JOIN, OUTER JOIN, LEFT JOIN, RIGHT JOINもう迷わない。JOINのイメージを掴もう!

  • 2021.05.11
  • SQL
【SQL】INNER JOIN, OUTER JOIN, LEFT JOIN, RIGHT JOINもう迷わない。JOINのイメージを掴もう!

はじめに

コジマです。

LEFT JOIN(左外部結合), RIGHT JOIN(右外部結合)調べてもどっちがどっちか忘れちゃう。
INNER JOIN(内部結合), OUTER JOIN(外部結合)結局何するんだっけ…?
って頭が混乱しちゃう人のために書きます。

自分もちょこちょこわからなくなる時がありました。

JOIN3大原則

これだけはまず覚えてください。
理解するのはこれらを覚えてからです。

1:テーブルは右にくっつく

JOINしたテーブルは右にくっつきます。
この感覚が超大事なので、とにかく覚えましょう。右にくっつく。

2:内部結合と外部結合の違いは「ぼっち」を葬るか生かすかの違い

以下のようなテーブルを考えます。
ユーザー情報を持つ「Users」テーブルと
ユーザーの持ち物の情報を持つ「Items」テーブルを考えます。

「Users」テーブルの「id」カラムと
「Items」テーブルの「userId」カラムを条件に結合することを考えてみます。

両方のテーブルに同じIDがあればレコードが横並びになりますが、
同じIDがない場合は相方がNULLになります。
このように相方がNULLになった状態を「ぼっち」と呼びます。
(「ぼっち」は私が勝手に呼んでるだけで、正式な呼び名ではありません。)

結論を申し上げると、
OUTER JOIN(外部結合)は「ぼっち」を生かします。
INNER JOIN(内部結合)は「ぼっち」を葬ります。

これらを踏まえて各JOINの動作を解説いたします。

各JOINを覚える

OUTER JOIN(外部結合)

まずは外部結合です。FULL OUTER JOINと書くこともあります。

外部結合は、両方のぼっちを生かします。

LEFT JOIN(左外部結合)

次に左外部結合です。LEFT OUTER JOINと書くこともあります。

左外部結合は、左側のぼっちを生かします。

RIGHT JOIN(右外部結合)

次に右外部結合です。RIGHT OUTER JOINと書くこともあります。

右外部結合は、右側のぼっちを生かします。

LEFT、RIGHTっていうのはどっちのぼっちを生かすかを示してるんですね。

INNER JOIN(内部結合)

次に内部結合です。単にJOINと書くこともあります。

内部結合は、両方のぼっちを葬ります。

小話

まとめの前に小話を少し。

LEFT JOINとRIGHT JOINどっちを使うべき?

原則に書いてある通り、テーブルは右側にくっついていきます。
それはすなわちSQLの書いた順にテーブルが並んでいくということなんですね。

LEFT JOINはぼっちを生かす優先順位が書いた順に並ぶので可読性が高いです。
RIGHT JOINはその逆のため、読みづらく開発現場では疎まれることが多いです。

LEFT JOINとRIGHT JOINどっち使おうか悩んだらLEFT JOINを使うことをお勧めします。

さいごに

ポイントをまとめます。

  • JOINしたテーブルは右にくっつく
  • INNER JOINは「ぼっち」を葬り、OUTER JOINは「ぼっち」を生かす
  • LEFT, RIGHTは生かす「ぼっち」を示している

自分なりにかみ砕いてJOINの話を書いてみました。
久々に頑張って書いたので、JOINに悩むSQLビギナーの助けになればと思います。

この記事を面白いまたは役に立ったと思ってくれた方は是非私のTwitter(@kojimanotech)を
フォローしてくれたらうれしいです!

システムエンジニアのつらい部分のあるあるなんかをエンタメにしたチャンネルを作りました。
チャンネルはこちら
つらい部分も楽しくなればと思っているのでよかったらチャンネル登録や高評価してくれたらうれしいです。

以上、コジマでした。


SQLカテゴリの最新記事