このチュートリアルでは、WHERE IN 句を調べて、指定されたテーブルまたは結果セットから結果をフィルタリングするために WHERE IN 句を使用する方法を見つけます。
SQL WHERE IN 句
以下に、SQL の WHERE IN 句の基本構文を示します。
SELECT 列 1、列 2、...
FROM テーブル名
WHERE 列名 IN (値 1, 値 2, ...);
基本的な「select」ステートメントから始めて、その後に結果セットに含めたい列を続けます。
次に、結果を取得するテーブルを指定します。最後に、WHERE 句とその後にフィルターする列の名前を使用してフィルター条件を指定します。 IN 句の後に、フィルタリングに使用する値のリストを指定します。
例 1: 単一の結果をフィルタリングする
WHERE IN 句の使用方法をよりわかりやすく説明するために、例を見てみましょう。 sakila サンプル データベースの「film」テーブルを考えてみましょう。
PG または PG-13 のレーティングを持つすべての映画を取得したいとします。 WHERE IN 句は次のように使用できます。
タイトル、リリース年、評価を選択しますフィルムから
WHERE 評価 IN ('PG');
この場合、取得する単一の値のリストを IN 句で指定します。
例 2: 複数の値をフィルタリングする
値のリストに複数の項目を指定することもできます。たとえば、PG および PG-13 のレーティングを持つリストを含む映画を取得するには、次のようにクエリを実行します。
タイトル、リリース年、評価を選択しますフィルムから
WHERE 評価 IN ('PG', 'PG-13');
結果の出力は次のようになります。
例 3: サブクエリを使用したフィルター
サブクエリで WHERE IN を使用すると、特定の結果セットから結果をフィルターで除外することもできます。
言語に基づいて映画をフィルタリングしたいとします。たとえば、英語と日本語の映画を取得するには、次のようにサブクエリ内で WHERE IN を使用します。
タイトル、リリース年、評価を選択しますフィルムfから
WHERE 言語 ID IN (
言語 ID を選択します
FROM言語
WHERE 名 IN ('英語'、'日本語')
);
この例では、「言語」テーブルから英語と日本語の「言語 ID」値を取得するサブクエリを作成します。メインクエリでは、結果として得られる「 language_id 」値に基づいて映画を選択します。
結論
この投稿では、SQL の WHERE IN 句を使用して、指定されたリスト内の 1 つまたは複数の値に一致する結果をフィルターで除外する方法を学びました。