SQL
初心者
新人プログラマ応援

SQL—分かりにくい JOIN / INNER JOIN / OUTER JOIN / LEFT JOIN / RIGHT JOIN の違い

SQLの JOIN って。

用語がたくさんあって分かりにくいですね。

しかし覚えれば良いのは、実は次の三つだけ です。(本当です)


  • JOIN

  • RIGHT JOIN

  • LEFT JOIN

これ以外のことは 考えなくて大丈夫 です。

なぜなら、あとはすべて この三つの別名 に過ぎないからです。


分類


  • INNER JOIN はなんと、1種類だけです。 (驚きましたか?)

  • OUTER JOIN は2種類あります。


    • そして LEFT と RIGHT に分かれます。



image


JOIN とは

「内部結合」です。

「結合できなかった行」は返しません。

本当の名前は INNER JOIN といいます。

でもそのことは、今は話さなくても良いでしょう。

JOIN はシャイで、優しすぎる。そして世間知らずです。

JOIN には、外の世界のことが分からないのです。

しかしこの世界にひとつしか存在しない、かけがえのないものが JOIN です。


LEFT JOIN / RIGHT JOIN とは

彼らはどちらも「外部結合」です。

LEFT とか RIGHT とか。大人しいフリしていますが、実は OUTER JOIN の一族です。

本当の名前を LEFT OUTER JOIN / RIGHT OUTER JOIN といいます。

でもそのことは、今は忘れてください。

「結合できなかった行」がある場合も、でもそんなの関係ねえ。

無理やり表示させるので、一部のレコードは NULL になってしまったりします。

LEFT JOIN / RIGHT JOIN には優しさがありません。強引なやつです。

LEFT JOIN / RIGHT JOIN は小さなことなんか気にしないのです。

しかし二人の中でも LEFT JOIN はまだ優しく。「主」のテーブルに従います。

RIGHT JOIN は本当に横暴で。「従」のテーブルを全て返すのです。


補足


  • 滅多に使わない FULL OUTER JOIN / CROSS JOIN のことは忘れてください。今日は世界から消しました。

  • JOIN 関係が覚えにくいのは。根本的に SQL の命名が悪い気がします。

  • 正確には短い名前の方が「別名」ですが、でもそんなの関係ねえ。


参考


備考