指定した複数の値に一つ以上一致するレコードを検索するにはIN句を使用します.
IN句の基本構文は以下のようになります.
SELECT 列名1 ,列名2, ...
FROM テーブル名
WHERE 列名 IN (条件1, 条件2, ...)
IN句はフィールドの値がIN句の中で指定した値のいずれかに一致した場合に真を返します. 上記のIN句を用いたSQLと下記のOR句を用いたSQLは等価になります.
SELECT 列名1 ,列名2, ...
FROM テーブル名
WHERE 列名 = 条件1
OR 列名 = 条件2
OR ...
またIN句はNOT句と組み合わせることで,指定した値のいずれにも一致しないデータを取得することができます.
SELECT 列名1 ,列名2, ...
FROM テーブル名
WHERE 列名 NOT IN (条件1, 条件2, ...)
上記のNOT INを用いたSQLと下記のOR句を用いたSQLは等価になります.
SELECT 列名1 ,列名2, ...
FROM テーブル名
WHERE 列名 <> 条件1
AND 列名 <> 条件2
AND ...
例として以下のテーブル(従業員マスタ)から20歳,21歳,29歳,30歳の従業員を検出します.
従業員
従業員コード | 従業員名 | 年齢 |
---|---|---|
00001 | チャーリー・ブラウン | 19 |
00002 | ルシール・ヴァン・ぺルト | 20 |
00003 | ライナス・ヴァン・ぺルト | 21 |
00004 | シュローダー | 29 |
00005 | ペパーミント・パティ | 30 |
00006 | マーシー | 31 |
SQL
SELECT * FROM 従業員
WHERE 年齢 IN (20, 21, 29, 30)
結果
従業員コード | 従業員名 | 年齢 |
---|---|---|
00002 | ルシール・ヴァン・ぺルト | 20 |
00003 | ライナス・ヴァン・ぺルト | 21 |
00004 | シュローダー | 29 |
00005 | ペパーミント・パティ | 30 |
注意.
サンプルで使用するテーブルは説明のため正規化を行っていなかったり,一般的でない列が含まれている場合があります.ご容赦ください.