SQLのLEFT JOIN(左結合)とは?基本構文から実践例まで徹底解説
SQLのLEFT JOIN(左結合)は、SQLにおける結合(JOIN)の一種です。指定した「左」テーブルのすべての行を返しつつ、「右」テーブルから特定の条件に一致する行を対応付けて取得します。
SQLでクエリを書く際、多くの場合は1つのテーブルだけを扱えば十分です。しかし、2つ以上のテーブルを同時に参照したい場面も少なくありません。そのような場合には、両方のテーブルの情報を組み合わせた結果を作成する必要があります。
SQLでは、この操作を「結合(JOIN)」と呼びます。JOINを使うことで、複数のテーブルから情報を取得し、それらを1つの結果セットとして組み合わせることができます。例えば、従業員テーブルと部署テーブルを結合すれば、各従業員が所属する部署名を取得できます。
本記事では、SQLの結合の中でも特に使用頻度の高い「LEFT JOIN」について詳しく解説します。LEFT JOINが役立つシーンや、実際のSQLクエリでの使い方を学びましょう。
SQLのLEFT JOINとは
SQLのLEFT JOINは、クエリ内で指定された「左」テーブルのすべてのレコードを返します。そのうえで、条件に基づいてこのテーブルの値を「右」テーブルと照合し、一致するレコードも併せて返します。一致する行が存在しない場合でも、左テーブルのレコードは必ず結果に含まれます。LEFT JOINは、SQLの外部結合(OUTER JOIN)の一種です。
例えば、各従業員の所属部署名の一覧を取得したい場合にLEFT JOINを使用できます。これにより、部署が未割り当ての従業員も含めて、すべての従業員を確認できるようになります。
LEFT JOINの基本的な構文は以下の通りです。
SELECT Table1.Column1, Table2.Column1
FROM Table1
LEFT JOIN Table2
ON Table1.Column2 = Table2.Column2;
まずSELECT文で結合を開始します。FROM句に指定したテーブルが「左」テーブルとなります。次にLEFT JOINキーワードを使って、「右」テーブルを指定します。
ON句では、テーブル同士を結び付けるための条件を指定します。なお、LEFT JOINは外部結合の一種であるため、「左外部結合(LEFT OUTER JOIN)」という名称で呼ばれることもあります。
それでは、具体例を使ってLEFT JOINの動作を確認していきましょう。
LEFT JOINの実行例
ここで、各従業員が勤務している部署名の一覧を取得したいとします。この情報を1つのクエリで取得するには、以下のようなクエリを実行します。
SELECT employees.name, employees.title, company_departments.name AS DeptName
FROM employees
LEFT JOIN company_departments
ON employees.department_id = company_departments.department_id;
このクエリは7件のレコードを返します。
| name | title | deptname |
| Luke | Sales Associate | Sales |
| Mike | Sales Associate | Sales |
| Hannah | Sales Associate | Sales |
| Geoff | Senior Sales Associate | Sales |
| Alexis | Sales Associate | Sales |
| Emma | Marketing Director | Marketing |
| Jonah | Vice President of Sales | Executive |
(7行)
クエリの最初の行では、取得する3つのカラムを指定しています。具体的には、従業員の名前・役職・勤務先の部署名です。「AS DeptName」と記述することで、部署名のカラムに「DeptName」という別名を付けています。
次の行では、employeesテーブルから情報を取得することを指定しています。続いて、そのテーブルとcompany_departmentsテーブルの間にLEFT JOINを作成します。最後の行では、共通の値であるdepartment_idを使って2つのテーブルを結び付けています。
LEFT JOINは、左テーブルのすべての行と、結合条件を満たす右テーブルの行のみを返します。
例えば、部署IDが「9」の従業員がいて、その部署が存在しない場合でも、その従業員はクエリ結果に表示されます。逆に、どの従業員にも割り当てられていない部署は、JOINクエリの結果には現れません。
それでは、新しい従業員をデータベースに追加して、同じクエリをもう一度実行してみましょう。新しい従業員のデータは以下の通りです。
| name | title | department_id |
| Adam | Senior Sales Associate | 9 |
(1行)
部署ID「9」はcompany_departmentsテーブルには存在しません。しかし、上記と同じLEFT JOINクエリを実行すると、Adamのレコードも結果に含まれます。これはLEFT JOINを使用しているためです。実行結果は以下のようになります。
| name | title | deptname |
| Luke | Sales Associate | Sales |
| Mike | Sales Associate | Sales |
| Hannah | Sales Associate | Sales |
| Geoff | Senior Sales Associate | Sales |
| Alexis | Sales Associate | Sales |
| Emma | Marketing Director | Marketing |
| Jonah | Vice President of Sales | Executive |
| Adam | Senior Sales Associate | NULL |
結果を見ると、Adamのレコードは部署名がNULL(空欄)のまま含まれていることがわかります。もしINNER JOIN(内部結合)を使用していた場合は、一致する部署が存在しないため、Adamのレコードは結果から除外される点に注意しましょう。この挙動の違いこそが、LEFT JOINとINNER JOINの最大の相違点です。
まとめ
SQLのLEFT JOINは複数のテーブルを照会し、指定した「左」テーブルのすべての行を返します。さらに、JOIN条件を満たす右テーブルの行も併せて返します。
例えば、顧客リストと、それぞれの顧客が契約しているポイントプログラムの名称を一緒に取得したい場合を考えてみましょう。ポイントプログラムの名称が別のテーブルに保存されているなら、LEFT JOINを使って簡単に取得できます。
SQLの学習をさらに進めたい方は、学習ロードマップやおすすめの教材をまとめたガイドも参考にしてください。基礎を固めながら、実務で使えるスキルを着実に身につけていきましょう。
-
SQL ServerのJOIN(結合)とは?4種類の結合方法を構文・図解・実例で徹底解説
SQL Server(Transact-SQL)では、複数のテーブルにまたがるデータを1つのクエリで取得するためにJOIN(結合)を使用します。SQLコマンド内で2つ以上のテーブルを連結する際に使われる、非常に重要な機能です。 SQL Serverで利用できるJOINには、主に次の4種類があります。 INNER JOIN … 内部結合。最も基本的な結合形式です。 LEFT OUTER JOIN … LEFT JOINとも記述できます。 RIGHT OUTER JOIN … RIGHT JOINとも記述できます。 FULL OUTER JOIN … FULL JOINとも記述できます。 以下
-
Fitbit Pay完全ガイド:設定方法からお支払い・セキュリティ対策まで徹底解説
Fitbitは、最も優れたスマートウェアラブルデバイスのひとつです。多彩なモデルと豊富な機能を備えており、その中でも人気の高い機能が「Fitbit Pay」です。Fitbit IonicやFitbit Versaに搭載されたNFC(近距離無線通信)チップにより、非接触決済に対応したあらゆる店舗で、腕時計をつけたまま支払いが可能になります。 この記事では、Fitbit Payの使い方をマスターできるよう、設定方法からセキュリティ対策まで完全ガイドとして詳しく解説します。 Fitbit Payとは? Fitbit Payは、デビットカードやクレジットカードをFitbit IonicおよびVersa