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