Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
WHERE
取得する行を条件で絞り込むための句です。比較演算子や範囲指定など、さまざまな条件を記述できます。
構文
-- 条件に一致する行を取得します。 SELECT 列名 FROM テーブル名 WHERE 条件; -- 範囲指定(BETWEEN)で取得します。 SELECT 列名 FROM テーブル名 WHERE 列名 BETWEEN 値1 AND 値2; -- リスト内の値と一致する行を取得します。 SELECT 列名 FROM テーブル名 WHERE 列名 IN (値1, 値2, 値3);
演算子一覧
| 演算子 | 概要 |
|---|---|
| = | 値が等しい行を取得します。 |
| <> または != | 値が等しくない行を取得します。 |
| < | 値が指定値より小さい行を取得します。 |
| > | 値が指定値より大きい行を取得します。 |
| <= | 値が指定値以下の行を取得します。 |
| >= | 値が指定値以上の行を取得します。 |
| BETWEEN 値1 AND 値2 | 値1以上・値2以下の範囲に含まれる行を取得します(両端含む)。 |
| IN (値1, 値2, ...) | リスト内のいずれかの値と一致する行を取得します。 |
| NOT IN (値1, 値2, ...) | リスト内のすべての値と一致しない行を取得します。 |
サンプルコード
-- 部署が「営業部」の社員を取得します。
SELECT name, department FROM employees WHERE department = '営業部';
-- 給与が30万円以上の社員を取得します。
SELECT name, salary FROM employees WHERE salary >= 300000;
-- 給与が25万円以上35万円以下の社員を取得します。
SELECT name, salary FROM employees WHERE salary BETWEEN 250000 AND 350000;
-- 部署が「営業部」または「開発部」の社員を取得します。
SELECT name, department FROM employees WHERE department IN ('営業部', '開発部');
-- 部署が「総務部」でない社員を取得します。
SELECT name, department FROM employees WHERE department <> '総務部';
実行結果
-- SELECT name, salary FROM employees WHERE salary BETWEEN 250000 AND 350000; の結果例 -- +----------+--------+ -- | name | salary | -- +----------+--------+ -- | 田中太郎 | 300000 | -- | 鈴木花子 | 280000 | -- | 山田次郎 | 320000 | -- +----------+--------+
データベース別の書き方
『WHERE』の基本構文(比較演算子・『BETWEEN』・『IN』)は主要なデータベースで共通して使用できます。
SELECT name, salary FROM employees WHERE salary >= 300000;
SELECT name, salary FROM employees WHERE salary BETWEEN 250000 AND 350000;
SELECT name, department FROM employees WHERE department IN ('営業部', '開発部');
不等号演算子は、MySQL・PostgreSQL・SQLite では『!=』と『<>』の両方が使えます。Oracle・SQL Server では標準SQLの『<>』を推奨します。
-- 標準SQL(全データベースで使用可能) SELECT name FROM employees WHERE department <> '総務部';
概要
『WHERE』句はSELECT・UPDATE・DELETEなど多くのSQL文と組み合わせて使用します。条件式はANDやORで複数組み合わせることができます。詳しくは『AND / OR / NOT』を参照してください。
『BETWEEN』は両端の値を含む範囲検索です。『salary BETWEEN 250000 AND 350000』は『salary >= 250000 AND salary <= 350000』と同じ意味になります。
NULL値の判定には『=』は使用できません。NULL値を検索するには『IS NULL』を使用してください。詳しくは『IS NULL / IS NOT NULL』を参照してください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。