Skip to the content.

最終更新日:2026年8月16日

DS検定トップ > EXISTSとは?サブクエリの存在判定を理解する【DS検定】

まず結論

EXISTSは、サブクエリが1行でも結果を返すかを判定するSQL構文です。

DS検定では、値そのものを比較するのではなく「該当データが存在するか」を見る点が重要です。

直感的な説明

「注文したことがある顧客だけを出したい」とします。

このとき知りたいのは、注文金額そのものではありません。

その顧客に対応する注文が1件でもあるか?

を確認できれば十分です。

これがEXISTSの考え方です。

定義・仕組み

基本形は次の通りです。

SELECT *
FROM customers A
WHERE EXISTS (
    SELECT 1
    FROM orders B
    WHERE A.customer_id = B.customer_id
);

このSQLでは、各顧客について対応する注文が1件でも見つかれば、その顧客を残します。

SELECT 1 の意味

EXISTSが見るのは、サブクエリの返す値ではなく、行が存在するかどうかです。

そのため、存在判定という意味では SELECT 1 の値そのものに意味はありません。

NOT EXISTS

該当する行が1件も存在しないことを確認したい場合は NOT EXISTS を使います。

SELECT *
FROM customers A
WHERE NOT EXISTS (
    SELECT 1
    FROM orders B
    WHERE A.customer_id = B.customer_id
);

これは「注文履歴がない顧客」を探す例です。

どんな場面で使う?

関連データがある行だけ残したい

  • 注文がある顧客
  • 在庫がある商品
  • 対応履歴がある問い合わせ

関連データがない行を探したい

NOT EXISTS を使います。

  • 注文がない顧客
  • 未処理の案件

よくある誤解・混同

❌ EXISTSとINは同じ

目的が似る場合はありますが、判断軸が違います。

構文 見ているもの
EXISTS 条件を満たす行が存在するか
IN 値が候補集合に含まれるか

❌ サブクエリが返す値が重要

EXISTSでは、行が返るかどうかが重要です。

❌ EXISTSは常に全行を最後まで調べる

実装最適化はDBMSに依存しますが、EXISTSの論理上の目的は「存在確認」です。試験では、1件でも存在すれば条件を満たすと理解すれば十分です。

❌ NOT EXISTSは値の不一致を調べる

NOT EXISTSは、条件を満たす行が存在しないことを確認します。

まとめ(試験直前用)

  • EXISTS = 存在判定
  • サブクエリが1行でも返ればTRUE
  • 値ではなく「行があるか」を見る
  • NOT EXISTS = 該当行が存在しない
  • EXISTS = 存在 / IN = 値で切り分ける

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

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

🔗 関連記事



© 2024-2026 stemtazoo. All rights reserved.