トップDML選択(基本) ≫ 指定した複数の値に一つ以上一致するレコードを検索する

指定した複数の値に一つ以上一致するレコードを検索する

指定した複数の値に一つ以上一致するレコードを検索するにはIN句を使用します.

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 ...

SQL サンプル

例として以下のテーブル(従業員マスタ)から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

注意.
サンプルで使用するテーブルは説明のため正規化を行っていなかったり,一般的でない列が含まれている場合があります.ご容赦ください.