---
title: "WHERE句とは？条件抽出の基本を理解する【DS検定】"
description: "WHERE句は、SQLで条件に合う行だけを抽出するための基本構文です。SELECTでの絞り込み、UPDATE・DELETEでの対象指定、JOINやHAVINGとの違い、DS検定で迷いやすい判断ポイントを整理します。"
last_modified_at: "2026-06-22"
canonical_url: "https://stemtazoo.github.io/ds/sql-where/"
section: "ds"
---

<div style="font-size: 14px; margin-bottom: 12px;">
  <a href="/ds/">DS検定トップ</a>
  ＞ WHERE句とは？条件抽出の基本を理解する【DS検定】
</div>

## まず結論

WHERE句とは、SQLで**条件に一致する行だけを対象にするための構文**です。

DS検定では、次のように切り分けると判断しやすくなります。

- `JOIN`：テーブルを結合する
- `WHERE`：行を条件で絞り込む
- `HAVING`：集計後のグループを絞り込む

特に、WHEREは「データを表示するための条件」だけでなく、`UPDATE` や `DELETE` で**どの行を対象にするか**を指定する役割もあります。

## 直感的な説明

例えば、売上データが次のようにあるとします。

| customer | item | price |
|---|---|---:|
| 田中 | ノートPC | 120000 |
| 佐藤 | マウス | 3000 |
| 鈴木 | キーボード | 8000 |

この中から「1万円以上の商品だけ見たい」とき、全件を見てから人間が探すのではなく、SQL側で条件を指定します。

```sql
SELECT *
FROM sales
WHERE price >= 10000;
```

結果は次のようになります。

| customer | item | price |
|---|---|---:|
| 田中 | ノートPC | 120000 |

つまりWHERE句は、分析に必要な行だけを取り出す**フィルター**です。

## 定義・仕組み

WHERE句は、SQLで行を絞り込む条件を指定する部分です。

```sql
SELECT 列名
FROM テーブル名
WHERE 条件;
```

例えば、東京の顧客だけを取得するSQLは次の通りです。

```sql
SELECT name
FROM customers
WHERE city = 'Tokyo';
```

よく使う条件演算子は次の通りです。

| 演算子 | 意味 |
|---|---|
| `=` | 等しい |
| `<>` | 等しくない |
| `>` | より大きい |
| `<` | より小さい |
| `>=` | 以上 |
| `<=` | 以下 |

複数条件を組み合わせる場合は、`AND` や `OR` を使います。

```sql
SELECT *
FROM sales
WHERE price >= 1000
  AND price < 10000;
```

DS検定では、SQLを完全に暗記するよりも、**条件が行に対して働くのか、集計後の結果に対して働くのか**を見分けることが重要です。

## どんな場面で使う？

WHERE句は、データ分析の前処理や確認作業で頻繁に使います。

### 売上分析

- 高額商品の行だけを抽出する
- 特定商品の売上だけを確認する
- 期間を絞って月次・年次の分析対象を作る

### 顧客分析

- 特定地域の顧客だけを取り出す
- 年齢や会員ランクで対象を絞る
- キャンペーン対象者の候補を抽出する

### ログ分析

- 特定日時のログだけを見る
- エラーが発生した行だけを抽出する
- あるユーザーIDの操作履歴を確認する

実務では、WHERE句の条件を間違えると「分析対象が多すぎる」「必要な行が消える」「更新対象を誤る」といったミスにつながります。

## よくある誤解・混同

### ① JOINとWHEREを混同する

| SQL | 役割 |
|---|---|
| `JOIN` | テーブルを結合する |
| `WHERE` | 条件に合う行を残す |

`JOIN` は表をつなぐ操作、`WHERE` は結合後または取得対象の行を絞る操作です。

DS検定で「テーブル同士を関連付ける」とあればJOIN、「条件に一致する行を抽出する」とあればWHEREと判断します。

### ② WHEREとHAVINGを混同する

| 句 | 絞り込む対象 |
|---|---|
| `WHERE` | 集計前の行 |
| `HAVING` | `GROUP BY`で集計した後のグループ |

例えば「価格が1000円以上の明細行を抽出する」はWHEREですが、「売上合計が10万円以上の店舗を残す」はHAVINGが自然です。

### ③ WHEREはデータを変更する句だと思う

WHERE自体は「変更処理」ではありません。対象行を指定する条件です。

ただし、`UPDATE` や `DELETE` と一緒に使うと、更新・削除される行を決めます。

```sql
UPDATE customers
SET rank = 'gold'
WHERE total_amount >= 100000;
```

このため実務では、更新や削除のWHERE条件を誤ると影響範囲が大きくなります。

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

- WHERE句は「条件に一致する行」を対象にするSQLの構文
- JOINはテーブル結合、WHEREは行の絞り込み
- WHEREは集計前、HAVINGは集計後の条件
- SELECTだけでなくUPDATEやDELETEでも対象行の指定に使う
- DS検定では「何を絞る条件か」を見れば選択肢を切りやすい

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

スキルカテゴリ：プログラミング

サブカテゴリ：SQL


★ SQLの構文を一通り知っていて、記述・実行できる（DML・DDLの理解、各種JOINの使い分け、集計関数とGROUP BY、CASE文を使用した縦横変換、副問合せやEXISTSの活用など）
