RIGHT JOINとは?SQL初心者向けに基本から使い方までわかりやすく解説

RIGHT JOINとは?SQL初心者向けに基本から使い方までわかりやすく解説

RIGHT JOIN(ライトジョイン)とは、右側のテーブルにあるデータをすべて取得し、左側のテーブルで一致するデータがあれば結合して表示するSQLの機能です。

LEFT JOINと似ていますが、基準となるテーブルが右側になる点が大きな違いです。実際のIT現場ではLEFT JOINの方が利用されることが多く、RIGHT JOINは既存SQLの保守や他社システムの解析で見かけることがあります。

RIGHT JOINとは?

RIGHT JOINは、SQL(Structured Query Language)のテーブル結合方法の一つです。

FROM句の後に指定したテーブルではなく、RIGHT JOINで指定した右側のテーブルを基準としてデータを取得します。

右側テーブルのデータは必ず表示され、一致する左側のデータが存在しない場合は、その列にNULL(値が存在しないことを表す値)が表示されます。

RIGHT JOINはどんな場面で使われるのか

実際の業務では次のような場面で利用されます。

  • すべての部署を表示し、所属社員がいる部署だけ社員名を表示する
  • すべての商品カテゴリを表示し、商品が登録されているカテゴリだけ商品名を表示する
  • すべての店舗を表示し、売上がある店舗だけ売上情報を表示する
  • すべての権限情報を表示し、利用者がいる権限だけユーザー情報を表示する

ただし、多くの現場ではテーブルの順番を入れ替えてLEFT JOINで記述するケースが一般的です。

なぜRIGHT JOINを理解する必要があるのか

RIGHT JOINを新規開発で使用する機会はそれほど多くありません。

しかし、既存システムのSQLを調査したり、他社が作成したSQLを保守したりする際にはRIGHT JOINが使われていることがあります。

そのため、「LEFT JOINとの違い」を理解しておくことが重要です。

RIGHT JOINのイメージ

社員テーブル

社員ID 氏名 部署ID
1001 山田 1
1002 佐藤 2

部署テーブル

部署ID 部署名
1 総務部
2 営業部
3 情報システム部

RIGHT JOINを実行すると、部署テーブルを基準に表示されます。

社員名 部署名
山田 総務部
佐藤 営業部
NULL 情報システム部

「情報システム部」は所属社員がいませんが、右側テーブルのデータなので表示されます。

RIGHT JOINの基本構文

SELECT *
FROM 社員
RIGHT JOIN 部署
ON 社員.部署ID = 部署.部署ID;

ON句では、関連付ける列を指定します。

LEFT JOINとの違い

比較項目 LEFT JOIN RIGHT JOIN
基準となるテーブル 左側 右側
左側のデータ すべて表示 一致するものだけ表示
右側のデータ 一致するものだけ表示 すべて表示
利用頻度 高い 低い

RIGHT JOINは、テーブルの順番を入れ替えたLEFT JOINと同じ結果を取得できる場合がほとんどです。

LEFT JOINで書き換えられる例

次の2つのSQLは、取得結果が同じになります。

RIGHT JOIN

SELECT *
FROM 社員
RIGHT JOIN 部署
ON 社員.部署ID = 部署.部署ID;

LEFT JOIN

SELECT *
FROM 部署
LEFT JOIN 社員
ON 部署.部署ID = 社員.部署ID;

このように、テーブルの順番を入れ替えればLEFT JOINで表現できるため、開発現場ではLEFT JOINが選ばれることが多くあります。

IT現場でよくある利用例

業務 利用例
部署管理 社員がいない部署を確認する
商品管理 商品が登録されていないカテゴリを確認する
店舗管理 売上がない店舗を調査する
権限管理 利用されていない権限を確認する

業務でよくあるトラブル

NULLが多く表示される

右側テーブルに対応する左側データが存在しない可能性があります。

取得件数が想定より多い

RIGHT JOINでは右側テーブルをすべて表示するため、INNER JOINより件数が多くなることがあります。

SQLが読みにくい

複数のJOINが組み合わさると、RIGHT JOINは処理の流れを理解しにくくなる場合があります。

原因の切り分け

確認項目 確認内容
結合キー 正しい列で結合しているか
データ型 型が一致しているか
NULL 一致しないデータがないか
右側テーブル 対象データが存在するか
WHERE句 NULLを除外していないか

確認する順番

  1. 右側テーブルの件数を確認する
  2. 左側テーブルのデータを確認する
  3. 結合キーを確認する
  4. ON句を確認する
  5. NULLが発生している理由を調査する

GUIでの確認方法

  • SQL Server Management Studio(SSMS)
  • MySQL Workbench
  • DBeaver
  • pgAdmin
  • Oracle SQL Developer

SQLを実行して結果を比較すると、LEFT JOINとの違いを理解しやすくなります。

CUI(コマンド)での確認方法

  • mysql
  • sqlcmd
  • psql
  • SQL*Plus

各データベースのコマンドラインツールからSQLを実行して確認できます。

ログの確認方法

RIGHT JOINの実行内容はWindowsイベントログには記録されません。

SQLエラーが発生した場合は、データベースサーバーのエラーログや実行ログを確認します。

イベントビューアーの確認方法

通常は不要です。

データベースサービスの障害や接続エラーが疑われる場合のみ、Windowsイベントビューアーを確認します。

PowerShellで確認できること

  • データベースサービスの状態確認
  • サーバーへの接続確認
  • TCPポートの疎通確認
  • サービスの起動確認

ショートカットキー

キー 用途
F5 SQL実行(SSMS)
Ctrl + A 全文選択
Ctrl + C 実行停止
Ctrl + F 検索

初心者がやりがちなミス

  • LEFT JOINとの違いを理解していない
  • どちらのテーブルが基準か分からなくなる
  • NULLをエラーと勘違いする
  • WHERE句でNULLを除外してしまう
  • RIGHT JOINを使う必要がない場面でも使用する

筆者の経験談

既存システムの保守作業でRIGHT JOINが多用されたSQLを調査したことがあります。当初は処理の流れを理解するのに時間がかかりましたが、LEFT JOINへ書き換えて考えると構造が分かりやすくなり、不具合の原因を短時間で特定できました。

現在では、新規開発ではLEFT JOINを使用し、RIGHT JOINは既存SQLを読むための知識として活用しています。

上司へ報告するポイント

  • 実行したSQL
  • 基準となるテーブル
  • NULLになった件数
  • 取得件数
  • データ不足の有無
  • 業務への影響範囲

エスカレーションするタイミング

  • マスターデータの欠落が判明した場合
  • 大量のNULLが発生している場合
  • 本番データの修正が必要な場合
  • システム全体へ影響する可能性がある場合

新人が覚えておくべきポイント

  • RIGHT JOINは右側テーブルを基準にする。
  • 一致しない左側データはNULLになる。
  • LEFT JOINへ書き換えられる場合が多い。
  • 既存システムの保守で見かけることがある。
  • 新規開発ではLEFT JOINが選ばれることが多い。

関連するIT用語

  • SQL(Structured Query Language)
  • JOIN
  • INNER JOIN
  • LEFT JOIN
  • FULL OUTER JOIN
  • NULL
  • 主キー(Primary Key)
  • 外部キー(Foreign Key)

よくある質問(FAQ)

RIGHT JOINはよく使われますか?

利用できるSQL構文ですが、新規開発ではLEFT JOINを使用するケースが多く、RIGHT JOINは既存システムの保守や解析で見かけることが一般的です。

RIGHT JOINとLEFT JOINはどちらを覚えるべきですか?

まずはLEFT JOINを優先して学ぶことをおすすめします。RIGHT JOINはLEFT JOINとの違いを理解できれば十分対応できる場面がほとんどです。

RIGHT JOINをLEFT JOINに書き換えられますか?

はい。FROM句とJOIN句のテーブルを入れ替えることで、多くの場合はLEFT JOINで同じ結果を取得できます。

まとめ

RIGHT JOINは、右側のテーブルを基準にすべてのデータを取得し、一致する左側のデータを結合するSQLの機能です。

実務ではLEFT JOINの方が広く利用されていますが、既存システムの保守やSQLの読解ではRIGHT JOINを理解しておくことが重要です。

まずは「右側のテーブルが必ず表示される」「LEFT JOINと役割はほぼ同じで、基準となるテーブルが異なる」というポイントを押さえておけば、SQLの理解がさらに深まります。

コメント

タイトルとURLをコピーしました