サイトアイコン プログラマー(PG)・システムエンジニア(SE)になるための入門講座

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

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

INNER JOIN(インナージョイン)とは、複数のテーブルの中から、共通するデータだけを結合して取得するSQLの機能です。

データベースを扱うIT業務では、社員情報と部署情報、顧客情報と注文情報など、複数のテーブルを組み合わせてデータを取得する場面が数多くあります。その中でも最も利用されるJOINがINNER JOINです。

INNER JOINとは?

INNER JOINは、SQL(Structured Query Language)で使用する結合方法の一つです。

指定した列の値が両方のテーブルで一致したデータだけを表示します。

一致しないデータは結果に含まれません。

INNER JOINが使われる場面

実際のIT現場では、次のような業務で利用されています。

データベースを利用するシステムでは、ほぼ毎日のようにINNER JOINが使われています。

なぜINNER JOINが重要なのか

データベースでは、データの重複を防ぐために情報を複数のテーブルへ分けて保存します。

例えば社員情報と部署情報を別々に管理することで、部署名が変更になっても部署テーブルだけを更新すれば済みます。

その代わり、必要な情報を表示するときはINNER JOINでテーブル同士を結合します。

INNER JOINのイメージ

社員テーブル

社員ID 氏名 部署ID
1001 山田 1
1002 佐藤 2
1003 鈴木 5

部署テーブル

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

INNER JOINを実行すると、部署IDが一致する社員だけが表示されます。

社員ID 氏名 部署名
1001 山田 総務部
1002 佐藤 営業部

部署IDが「5」の鈴木さんは、部署テーブルに一致するデータがないため表示されません。

INNER JOINの基本構文

基本的な書き方は次のようになります。

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

ONでは、どの列同士を関連付けるかを指定します。

INNER JOINの実際の利用例

社員名と部署名を取得する

SELECT
社員.氏名,
部署.部署名
FROM 社員
INNER JOIN 部署
ON 社員.部署ID = 部署.部署ID;

このSQLでは、社員名と部署名を一覧で表示できます。

初心者が混乱しやすいポイント

取得件数が少ない場合は、結合条件やデータの有無を確認しましょう。

INNER JOINとLEFT JOINの違い

比較項目 INNER JOIN LEFT JOIN
一致するデータ 表示する 表示する
一致しない左側データ 表示しない 表示する
利用頻度 非常に高い 高い

迷った場合は、「一致したデータだけ取得する」がINNER JOINと覚えると理解しやすくなります。

IT現場でよくある利用例

業務 結合するテーブル
社員管理 社員情報+部署情報
販売管理 注文情報+顧客情報
在庫管理 商品情報+在庫情報
会員管理 会員情報+契約情報
アクセス管理 ユーザー情報+権限情報

業務でよくあるトラブル

取得件数が0件になる

結合条件が間違っている、または一致するデータが存在しない可能性があります。

取得件数が少ない

片方のテーブルに対応するデータが不足している場合によく発生します。

SQLエラーが発生する

列名の指定ミスや、同じ列名をテーブル名なしで指定していることが原因の場合があります。

原因の切り分け

確認項目 確認内容
結合キー 正しい列を指定しているか
データ型 数値型・文字列型が一致しているか
データ件数 両テーブルにデータがあるか
NULL 結合キーにNULLが含まれていないか
WHERE条件 検索条件で除外していないか

確認する順番

  1. テーブルにデータが存在するか確認する
  2. 結合キーを確認する
  3. 結合キーのデータ型を確認する
  4. ON句を確認する
  5. WHERE条件を確認する
  6. 取得件数が想定どおりか確認する

GUIでの確認方法

GUIツールでは、SQLを実行しながら結果を表形式で確認できます。

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

コマンドラインからSQLを実行し、JOIN結果を確認できます。

ログの確認方法

INNER JOIN自体はWindowsイベントログには記録されません。

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

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

通常は不要ですが、データベースサービスが停止している場合や接続エラーが発生した場合は、Windowsイベントビューアーでサービス関連のログを確認します。

PowerShellで確認できること

ショートカットキー

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

初心者がやりがちなミス

筆者の経験談

社内SEとして業務システムの調査を行った際、取得件数が想定より少ない原因を調べたところ、INNER JOINで結合していたマスターテーブルに登録漏れがありました。SQL自体は正しくても、元データが不足していると結果が変わるため、テーブルの内容まで確認することが重要だと実感しました。

上司へ報告するポイント

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

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

関連するIT用語

よくある質問(FAQ)

INNER JOINとJOINは違いますか?

多くのデータベースでは、JOINと記述した場合はINNER JOINと同じ意味になります。ただし、可読性を高めるために「INNER JOIN」と明示することが推奨されます。

INNER JOINは何個まで使えますか?

複数のテーブルを連続して結合できます。ただし、結合数が増えるほどSQLが複雑になり、処理時間も長くなる可能性があります。

INNER JOINとLEFT JOINはどちらを使えばよいですか?

一致するデータだけ必要な場合はINNER JOIN、一致しないデータも含めて取得したい場合はLEFT JOINを使用します。

まとめ

INNER JOINは、複数のテーブルから一致するデータだけを取得する最も基本的で利用頻度の高いJOINです。

データベースを扱うIT業務では欠かせない知識であり、社内SEや運用保守、ヘルプデスクでも理解しておくと調査やデータ確認がスムーズになります。

まずは「一致したデータだけ表示する」という基本を理解し、結合キーや取得件数を確認する習慣を身に付けることで、正確なSQLを作成できるようになります。

モバイルバージョンを終了