SQL Server
 Computer >> コンピューター >  >> プログラミング >> SQL Server

【SQL Server】IN条件の使い方を徹底解説!基本構文から実用例まで

SQL Server(Transact-SQL)における IN条件 は、SELECT、INSERT、UPDATE、DELETEステートメント内で複数のOR条件を並べる手間を省き、クエリをシンプルにするために使用される条件式です。特定の複数の値と一致するレコードを抽出したい場合に非常に便利です。

IN条件の基本構文

式 IN (値1, 値2, ... 値n);

パラメータの説明

  • expression(式):照合の対象となる値またはカラム
  • value 1, value 2, ... value n:式と照合する値のリスト

押さえておきたいポイント

  1. SQL ServerのIN条件は、式がリスト内のいずれかの値(値1、値2、…値n)と一致する場合に、該当するレコードを返します。
  2. IN条件は「IN演算子」と呼ばれることもあります。

使用例1:文字列値で検索する

従業員テーブル(nhanvien)から、姓が「Smith」「Anderson」「Johnson」のいずれかに一致するレコードを取得する例です。

SELECT *
FROM nhanvien
WHERE ho IN ('Smith', 'Anderson', 'Johnson');

このクエリを実行すると、従業員の姓が Smith、Anderson、Johnson のいずれかである行が結果として返されます。SELECT句で * を指定しているため、テーブルのすべてのカラムが結果セットに含まれます。

実は、上記のクエリは次のSELECT文とまったく同じ意味を持っています。

SELECT *
FROM nhanvien
WHERE ho = 'Smith'
   OR ho = 'Anderson'
   OR ho = 'Johnson';

比較すると分かるように、IN条件を使うことでクエリが短くなり、可読性が大きく向上します。

使用例2:数値で検索する

次に、従業員IDが 1、2、3、4、10 のいずれかに一致するレコードを取得する例を見てみましょう。

SELECT *
FROM nhanvien
WHERE nhanvien_id IN (1, 2, 3, 4, 10);

このクエリは、IDが 1、2、3、4、10 の従業員情報を返します。OR条件で書き直すと以下のようになり、記述量の違いが一目瞭然です。

SELECT *
FROM nhanvien
WHERE nhanvien_id = 1
   OR nhanvien_id = 2
   OR nhanvien_id = 3
   OR nhanvien_id = 4
   OR nhanvien_id = 10;

使用例3:NOT演算子との組み合わせ

IN条件は NOT演算子 と組み合わせることで、「リスト内の値に一致しない」レコードを抽出することもできます。

SELECT *
FROM nhanvien
WHERE ten NOT IN ('Sarah', 'John', 'Dale');

この例では、名前が Sarah、John、Dale 以外の従業員の行が結果セットとして返されます。「除外したい値が少数で、それ以外すべてを取得したい」というケースでは、NOT INの方が効率的に書けることが多いです。

上記のクエリは、次のように不等号演算子(<>)を使ったAND条件でも同じ結果が得られます。

SELECT *
FROM nhanvien
WHERE ten <> 'Sarah'
  AND ten <> 'John'
  AND ten <> 'Dale';

補足:サブクエリとの組み合わせ

IN条件の括弧内には、値のリストだけでなくサブクエリ(副問合せ)を指定することもできます。

SELECT *
FROM nhanvien
WHERE phongban_id IN (
    SELECT phongban_id
    FROM phongban
    WHERE vitri = 'Ha Noi'
);

この例では、所在地が「Hanoi」の部署IDをサブクエリで取得し、その部署に所属する従業員の一覧を返します。動的に条件値を決定したい場合に非常に有用なテクニックです。

注意点:NOT INとNULL値

NOT INを使用する際には、比較対象のカラムやリスト内に NULL が含まれる場合に注意が必要です。NULLとの比較は常にUNKNOWN(不明)と評価されるため、意図せず結果が0件になることがあります。NULLが混在する可能性があるデータでは、事前にNULLを除外する処理を加えるか、NOT EXISTS の利用を検討しましょう。

  1. 【SQL Server】AND条件(AND演算子)の使い方を実例付きで解説

    SQL ServerにおけるAND条件(AND演算子)は、SELECT文、INSERT文、UPDATE文、DELETE文の中で、2つ以上の条件を同時に評価するために使用されます。すべての条件を満たすレコードだけを抽出したい場合に不可欠な機能です。 AND条件の基本構文 WHERE 条件1 AND 条件2 ... AND 条件n; パラメータの説明 条件1、条件2、…条件n: レコードが選択されるために満たす必要がある条件です。 押さえておきたいポイント SQL ServerのAND条件では、2つ以上の条件を組み合わせてチェックできます。 AND条件ではすべての条件が真(TRUE)の場合

  2. MS SQL Serverとは?特徴・主な用途・バージョン履歴・インスタンスの基インスタンスの基礎を徹底解説

    SQL Server(MS SQL Server)とは? SQL Serverは、Microsoftが開発したリレーショナルデータベース管理システム(RDBMS)です。従来のRDBMSの枠組みにとどまらず、オブジェクト指向の概念も取り入れたORDBMS(オブジェクトリレーショナルデータベース管理システム)としての側面も併せ持っています。主な特徴は以下の通りです。 Microsoftが開発したRDBMSベースのデータベースソフトウェアである ORDBMS(オブジェクトリレーショナルデータベース管理システム)としても機能する 特定のプラットフォームに依存しない独立した環境で動作する コマンドライ