SQLのテーブル結合にはいくつか種類があります。
なんとなく使っていたけど、どのようなものなのかあまり理解できていなかったので調べてみました。
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の基本は同じなので、どちらかを覚えておけば大丈夫です。
パフォーマンスを意識するとテーブル結合は重要なので、しっかりと覚えておきたいですね。