ds sql
まず結論
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を用いた基本的なデータ操作(検索・集計・結合等)ができる
🔗 関連記事
- LEFT JOINとWHEREの関係とは?(SQLのひっかけ問題)【DS検定】
- 自己結合とは?同じテーブルを結合する理由を理解する【DS検定】
- COUNTの違いとは?COUNT(*)・COUNT(列)・COUNT DISTINCTを整理【DS検定】
- COUNT DISTINCTとは?ユニーク数を数える方法【DS検定】
- DDL文とDML文の違いとは?SQLの基本操作を整理【DS検定】