---
title: "EXISTSとは？サブクエリの存在判定を理解する【DS検定】"
description: "EXISTSとは「条件を満たすデータが存在するかどうか」を判定するSQLの構文DS検定では「値比較ではなく存在チェック」であることを見抜けるかが重要。定義、具体例、似た概念との違い、選択肢の見分け方を整理します。主要な混同パターンや実務での読み取り方も確認します。"
canonical_url: "https://stemtazoo.github.io/ds/sql-exists/"
section: "ds"
---

<div style="font-size: 14px; margin-bottom: 12px;">
  <a href="/ds/">DS検定トップ</a>
  ＞ EXISTSとは？サブクエリの存在判定を理解する【DS検定】
</div>

## まず結論

EXISTSとは「条件を満たすデータが存在するかどうか」を判定するSQLの構文

DS検定では「値比較ではなく存在チェック」であることを見抜けるかが重要




## 直感的な説明

「その条件に合うデータが1件でもある？」をチェックするイメージです。

例えば

注文したことがある顧客だけ抽出したい


👉 「注文データが存在するか？」で判断する

👉 1件でもあればOK（中身は関係ない）



## 定義・仕組み

EXISTSは、サブクエリの結果が1件でもあればTRUEになる条件式です。

基本形：

SELECT *
FROM 顧客テーブル A
WHERE EXISTS (
    SELECT 1
    FROM 注文テーブル B
    WHERE A.顧客ID = B.顧客ID
);

ポイント：

サブクエリの中身（SELECT 1）は重要ではない

1件でも見つかればTRUE




## どんな場面で使う？

よく使う場面

関連データが存在するかの判定 （例：注文がある顧客）

データの有無チェック


注意が必要な場面

値の比較をしたいとき → EXISTSではなくINや=を使う




## よくある誤解・混同

❌ INと同じ

→ ⭕ 似ているが役割が違う

EXISTS：存在するか

IN：値が含まれるか


👉 DS検定ではここを混同させる



❌ サブクエリの値が重要

→ ⭕ 件数（存在）が重要

SELECT 1でもSELECT *でも結果は同じ



❌ 全件チェックする

→ ⭕ 1件見つかった時点で終了

👉 EXISTSは効率的な判定



❌ NOT EXISTSは逆に全部必要

→ ⭕ 1件も存在しないことを確認する



## まとめ（試験直前用）

EXISTS＝存在するかの判定

1件でもあればTRUE

中身の値は関係ない

INとは「存在 vs 値」で違う

「あるかどうか？」で考えるのがコツ




## 対応スキル項目（データエンジニアリング力シート）

データ基盤

データ操作

★ SQLを用いた基本的なデータ操作（検索・集計・結合等）ができる

<hr>

<div style="margin-top: 16px;">
  🏠 <a href="/ds/">DS検定トップに戻る</a>
</div>
