SQL IN述語の使い方

PostgreSQL logo PostgreSQL

IN述語を使用して、複数の条件を指定しレコードを検索する方法を解説します。

構文

column_name IN (value1[, value2, ...])
column_name: カラム名
value1: 比較する値1
value2: 比較する値2
戻り値 - column_name = value1 or column_name = value2 or ... を満たす場合: true
             column_name = value1 or column_name = value2 or ... を満たさない場合: false

サンプルプログラム

以下のemployeeテーブルに対して、SQLコマンドを実行していきます。

  name   | age 
---------+-----
 Taro    |  23
 Hanako  |  23
 Jiro    |  22
 Haruo   |  42
 Natsuko |  35
 Akio    |  28
 Fuyumi  |  26
-- employeeテーブルのageが22または26または28のレコードの全カラム情報を参照
SELECT * FROM employee WHERE age IN (22, 26, 28);

■出力結果

  name  | age 
--------+-----
 Jiro   |  22
 Akio   |  28
 Fuyumi |  26

補足情報

IN述語には、以下のように副問い合わせ式( FROM句やWHERE句などで入れ子になったSELECT文 )を記述することも可能です。

-- employee
  name   | age 
---------+-----
 Taro    |  23
 Hanako  |  23
 Jiro    |  22
 Haruo   |  42
 Natsuko |  35
 Akio    |  28
 Fuyumi  |  26
-- young_employee
 young_age 
-----------
        22
        23
        24
        25
-- employeeテーブルのageが
-- young_employeeテーブルのyoung_age(副問い合わせ)のいずれかと等しいレコードの全カラム情報を参照
SELECT * FROM employee WHERE age IN (SELECT age FROM young_employee);

■出力結果

  name  | age 
--------+-----
 Taro   |  23
 Hanako |  23
 Jiro   |  22

コメント

タイトルとURLをコピーしました