初心者向け

【MySQL】テーブル結合処理の違いを理解しよう!【JOIN, LEFT JOIN, RIGHT JOIN】

mysql-join

こんばんは!光です。

大手グローバル企業でWebエンジニアをやっています。

Webエンジニアを目指してプログラミングを勉強している初心者の方向けに情報を発信しています。

経歴や実績はこちら

システム開発のお仕事の依頼もお待ちしております。

お問い合わせページTwitterのDMからお気軽にお問い合わせください!

今回はこのような質問をいただきました。

JOIN, LEFT JOIN, RIGHT JOINって何が違うの?

名前は似ているけど処理としては全然違うんですよね。

そこで今回はこちらの質問について解説していきます!

テーブル結合処理の違いを理解しよう!

特徴や違いについてざっくりと解説していきます!

内部結合

JOINとINNER JOINは同意で、内部結合を意味します。

紐付いているレコードのみで新たなテーブルを表示します。

JOIN

SELECT * FROM table1 JOIN table2 ON table1.id = table2.table1_id

table1.id = table2.table1_idのもののみを表示します。

どちらかのテーブルにデータが存在しなかったり、NULLだったりした場合には表示されません

逆に、同じid(table1_id)の行が複数ある場合は、複製して表示します

外部結合

外部結合にはLEFT JOIN(左外部結合)とRIGHT JOIN(右外部結合)が存在します。

紐付いているレコード以外も含めて新たなテーブルを表示します。

LEFT JOIN

SELECT * FROM table1 LEFT JOIN table2 ON table1.id = table2.table1_id

LEFT JOINということで左のテーブル(table1)はすべて表示されます。

もし、右のテーブル(table2)にデータが存在しなかった場合はNULLで表示されます。

左のテーブルを基準にしてデータを追加したい場合には便利そうですね。

RIGHT JOIN

SELECT * FROM table1 RIGHT JOIN table2 ON table1.id = table2.table1_id

RIGHT JOINはLEFT JOINの逆で、右のテーブル(table2)がすべて表示されます。

その他の仕様もLEFT JOINの逆になります。

あとがき

私も今まではなんとなく使っていましたが、これからはしっかり考えた上で使えそうです。

外部結合のほうが使いやすいかな?

LEFT JOINとRIGHT JOINの基本は同じなので、どちらかを覚えておけば大丈夫です。

パフォーマンスを意識するとテーブル結合は重要なので、しっかりと覚えておきたいですね!