SQL の基本 | DML: データ操作言語 | IN, NOT IN
SQL では 2 つの場面で IN 演算子を使用する。このページでは、そのうち WHERE に関連する場面について説明する。この使い方では、必要な値を少なくとも 1 つ知っている必要がある。そして、既知のすべての値を IN 句に入力する。
IN, NOT IN 構文
IN 句は次のとおりである。
SELECT "フィールド名"
FROM "テーブル名"
WHERE "フィールド名" IN ('値1', '値2', ...);
括弧内には 1 つ以上の値があり、値同士はカンマで区切る。値は数値でも文字列でもよい。括弧内の値が 1 つだけの場合は、次の条件と同じである。
WHERE "フィールド名" = '値1'
IN 句の反対条件で検索する場合は NOT IN を使用する。
SELECT "フィールド名"
FROM "テーブル名"
WHERE "フィールド名" NOT IN ('値1', '値2', ...);
IN の例
たとえば、store_information テーブルから Los Angeles または San Diego を含むデータをすべて取得する場合を考える。
store_information テーブル
| store_name | sales | txn_date |
|---|---|---|
| Los Angeles | 1500 | Jan-05-2018 |
| San Diego | 250 | Jan-07-2018 |
| Los Angeles | 300 | Jan-08-2018 |
| Boston | 700 | Jan-08-2018 |
次のようにコマンドを入力する。
SELECT *
FROM store_information
WHERE store_name IN ('Los Angeles', 'San Diego');
結果は次のとおりである。
| store_name | sales | txn_date |
|---|---|---|
| Los Angeles | 1500 | Jan-05-2018 |
| San Diego | 250 | Jan-07-2018 |
| Los Angeles | 300 | Jan-08-2018 |
NOT IN の例
これとは反対に、Los Angeles または San Diego を除外したデータをすべて取得する場合は、次のようにする。
SELECT *
FROM store_information
WHERE store_name NOT IN ('Los Angeles', 'San Diego');
結果は次のとおりである。
| store_name | sales | txn_date |
|---|---|---|
| Boston | 700 | Jan-08-2018 |