SQL練習室
← SQLガイド

SQLのWHERE句とは?条件で絞り込む書き方をPostgreSQLで解説

SQLのWHERE句は、テーブルから条件に合う行だけを抽出するときに使います。PostgreSQLでは条件式の結果がtrueの行だけが残り、falseまたはNULLの行は除外されます。複数条件やNULL判定の基本を順に確認しましょう。

WHEREの基本構文

sql
SELECT columns
FROM table_name
WHERE condition;

WHERE句で使う比較演算子

等しい条件は=、等しくない条件は<>、大小の比較は>、>=、<、<=で表します。範囲はBETWEEN、候補の一覧はIN、文字列パターンはLIKEでも書けます。WHEREの条件式は行ごとに評価され、結果がtrueになった行だけが次の処理へ進みます。

演算子意味
=等しいsalary = 500000
<> または !=等しくないdepartment <> 'Sales'
<より小さいsalary < 500000
<=以下salary <= 500000
>より大きいsalary > 500000
>=以上salary >= 500000
sql
SELECT name, salary
FROM employees
WHERE salary BETWEEN 400000 AND 600000;

AND・OR・NOTで複数条件を組み合わせる

ANDは両方の条件を満たす行、ORはいずれかを満たす行を抽出し、NOTは条件を反転します。PostgreSQLではNOT、AND、ORの順に優先されるため、ANDとORを混ぜる場合は括弧で評価順を明示すると安全です。

sql
SELECT name, department
FROM employees
WHERE active = true
  AND (department = 'Sales' OR department = 'Support');

SQLのNULLはIS NULLで判定する

NULLは「値がない、または不明」を表し、通常の値ではありません。そのためcolumn = NULLではtrueになりません。NULLかどうかはIS NULLNULLでないことはIS NOT NULLで判定します。比較結果がNULLになった行もWHEREでは除外されます。

sql
SELECT name, manager_id
FROM employees
WHERE manager_id IS NULL;

実際に1問解いてみる

=で絞り込む

名前がBobの社員を取得してください。

テーブル

読み込み中…

実行結果

関連構文

WHEREについてよくある質問

WHEREとHAVINGの違いは何ですか?
WHEREはGROUP BYや集約より前の各行を絞り込み、HAVINGは集約後のグループを絞り込みます。通常の列条件はWHERE、COUNTやSUMなどの集約結果の条件はHAVINGに書きます。
WHEREで複数の値を指定するには?
同じ列を複数候補と比較するなら、department IN ('Sales', 'Engineering') のようにINを使うと簡潔に書けます。

参考文献

内容はPostgreSQL公式ドキュメントを参照し、初めて学ぶ人向けに日本語で整理しています。