バックエンド

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

mysql-join
野田竣介

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

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の基本は同じなので、どちらかを覚えておけば大丈夫です。

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

記事URLをコピーしました