INNER JOIN、LEFT JOIN、RIGHT JOINの違いと使用例

※当サイトではアフィリエイト広告を利用しています

SQLのJOIN操作は、複数のテーブル間で関連性を持つデータを結合して取得するための重要な機能です。

ここでは、主に使われるJOINの種類であるINNER JOIN、LEFT JOIN、RIGHT JOINについて、その違いと使用例を考えてみたいと思います。

INNER JOIN

INNER JOINは、指定された条件に基づいて2つのテーブルを結合します。

この結合方法では、条件にマッチする行のみが結果セットに含まれます。

SELECT employees.name, orders.order_id
FROM employees
INNER JOIN orders ON employees.employee_id = orders.employee_id;

このクエリは、employeesテーブルとordersテーブルのemployee_idが一致するすべての行を取得します。

LEFT JOIN (またはLEFT OUTER JOIN)

LEFT JOINは、左テーブルのすべての行と、右テーブルのマッチする行を結合します。

もし右テーブルにマッチする行がない場合は、NULL値が結果に含まれます。

SELECT students.name, scores.score FROM students LEFT JOIN scores ON students.student_id = scores.student_id; 

このクエリは、すべてのstudentsの名前を取得し、もしscoresテーブルにその学生のスコアがあればそれも取得します。

スコアがない学生の場合は、スコアはNULLとして表示されます。

RIGHT JOIN (またはRIGHT OUTER JOIN)

RIGHT JOINは、左テーブルのマッチする行と、右テーブルのすべての行を結合します。

もし左テーブルにマッチする行がない場合は、NULL値が結果に含まれます。

SELECT customers.name, orders.order_id FROM customers RIGHT JOIN orders ON customers.customer_id = orders.customer_id; 

このクエリは、すべてのordersの注文IDを取得し、もしcustomersテーブルにその注文の顧客があれば、その顧客の名前も取得します。

顧客がいない注文の場合は、顧客名はNULLとして表示されます。

まとめ

JOIN操作は、リレーショナルデータベースにおけるデータ取得の中心的な操作の一つです。

適切なJOINタイプを選択することで、効率的に必要な情報を取得することができます。

INNER JOIN、LEFT JOIN、RIGHT JOINの違いを理解し、シチュエーションに応じて適切に利用することが大切です。

コメント