• ブログ
  • >
  • [SQLの基本]テーブル結合入門: INNER JOIN、LEFT JOIN、RIGHT JOIN

[SQLの基本]テーブル結合入門: INNER JOIN、LEFT JOIN、RIGHT JOIN

投稿日:

はじめに

データベースを操作する際、複数のテーブルからデータを結合して一つの結果セットを取得することがよくあります。SQLには、テーブルを結合するためのさまざまな方法が用意されています。今回は、最も基本的なテーブル結合の方法である「INNER JOIN」「LEFT JOIN」「RIGHT JOIN」について解説します。

INNER JOIN

INNER JOINは、結合条件に一致する行だけを結合します。結合する両方のテーブルに共通するデータだけが結果セットに含まれます。

例 employeesテーブルとテーブルdepartmentsをdepartment_idで結合し、従業員の名前と所属する部門名を取得するクエリは次の通りです。

SELECT 
  employees.first_name, 
  employees.last_name, 
  departments.name
FROM employees
INNER JOIN departments ON employees.department_id = departments.id;

LEFT JOIN

LEFT JOINは、左側のテーブルの全ての行と、右側のテーブルの結合条件に一致する行を結合します。右側のテーブルに一致する行がない場合、NULLが返されます。

例 employeesテーブルとテーブルdepartmentsをdepartment_idで左外部結合し、全ての従業員とその所属する部門名を取得するクエリは次の通りです。

SELECT 
  employees.first_name, 
  employees.last_name, 
  departments.name
FROM employees
LEFT JOIN departments ON employees.department_id = departments.id;

RIGHT JOIN

RIGHT JOINは、右側のテーブルの全ての行と、左側のテーブルの結合条件に一致する行を結合します。左側のテーブルに一致する行がない場合、NULLが返されます。

例 employeesテーブルとテーブルdepartmentsをdepartment_idで右外部結合し、全ての部門とその部門に所属する従業員を取得するクエリは次の通りです。

SELECT 
  employees.first_name, 
  employees.last_name, 
  departments.name
FROM employees
RIGHT JOIN departments ON employees.department_id = departments.id;

JOINの使い分け

どのJOINを使うかは、「一致しないデータをどう扱いたいか」で決まります。

INNER JOIN: 両方のテーブルに存在するデータだけが欲しい場合。例:部門に所属している従業員のみを取得

LEFT JOIN: 左側のテーブルのデータは全て残したい場合。例:部門未配属の従業員も含めて取得

RIGHT JOIN: 右側のテーブルのデータは全て残したい場合。例:従業員がいない部門も含めて取得

実務では、INNER JOINとLEFT JOINを使う場面が多いです。RIGHT JOINはテーブルの順序を入れ替えてLEFT JOINに書き換えることもできるため、LEFT JOINに統一するチームもあります。

まとめ

今回は、SQLの基本的なテーブル結合方法である「INNER JOIN」「LEFT JOIN」「RIGHT JOIN」について学びました。これらの結合を使いこなすことで、複数のテーブルから効率的にデータを取得できるようになります。まずはINNER JOINとLEFT JOINを実際に書いてみて、結果の違いを確認してみましょう。

SheetFlow - 学んだSQLを業務で活かそう

SQLマーケティングアカデミーで身につけたSQLスキル、実務でも使ってみませんか?

SheetFlowは、ExcelファイルをアップロードしてSQLで直接操作できるクラウドサービスです。学んだSELECT文やJOIN、集計関数をそのまま業務データに適用し、手作業の集計を自動化できます。

SheetFlowを無料で試す