【MySQL】 JOIN (表結合)の違いまとめ。

いつもの如く超絶自分用。

結合方式 詳細
LEFT JOIN(LEFT OUTER JOIN)

・JOIN左側のテーブルデータは全て表示。(WHERE句があればそれに順ずる)

・そこへ対応する右側のテーブルデータが追される。

・対応するデータが右側のテーブルに存在しない場合、 NULLが挿入される。

RIGHT JOIN(RIGHT OUTER JOIN)

・基本的にLEFT JOINの逆動作

・JOIN右側のテーブルデータは全て表示。(WHERE句があればそれに順ずる)

・そこへ対応する左側のテーブルデータが追される。

・対応するデータが左側のテーブルに存在しない場合、 NULLが挿入される。

INNER JOIN

・指定したテーブルの双方に結びつくレコードが存在している場合のみ表示される。

・いずれかがNULLの場合どちらも表示されない。

SQLとしては以下のような感じ。

SELECT
	*
FROM 
	sites LEFT JOIN items
ON
	sites.id = items.site_id

上記は、サイトに対して結びつくアイテムをリレーションで管理しているような場面を想定した際の一例。
「LEFT JOIN」の部分を「RIGHT JOIN」「INNER JOIN」にすれば、上の表通りな挙動になる。