指定した値のリストと比較する(IN演算子)

WHERE 句で条件を指定するときに、 IN 演算子を使用するとカラムの値が指定した値のリストの中に一致したものがあるかどうか調べることができます。ここでは MySQL で IN 演算子を使ってカラムの値を指定した値のリストと比較する方法について解説します。

(Last modified: )

IN演算子の使い方

WHERE 句で条件を指定する場合に、 IN 演算子を使うとカラムの値が指定した値のリストの中に一致するものがあるかどうか調べることができます。使い方は次の通りです。

SELECT col_name1 [, col_name2 ...] FROM table_name
  WHERE col_name IN (value1, value2, ...)

カラム( col_name )の値が括弧内に列挙した値のいずれかと等しい場合に条件式は TRUE となります。 IN 演算子については「比較演算子」も参照して下さい)。

※ カラムの値が NULL の場合は NULL を返します。またリストの中に NULL が含まれている場合でカラムの値と一致しなかった場合も NULL を返します。

また IN 演算子の前に NOT を付けることでリストの中のどの値とも一致しない場合に条件式が TRUE となります。

SELECT col_name1 [, col_name2 ...] FROM table_name
  WHERE col_name NOT IN (value1, value2, ...)

使い方は次のとおりです。

[例] address カラムの値が 'Tokyo', 'Chiba', 'Saitama'のいずれかに一致するデータを取得
SELECT * FROM staff WHERE address in ('Tokyo', 'Chiba', 'Saitama');

なお IN 演算子は次のように条件式を記述した場合と同じです。

SELECT col_name1 [, col_name2 ...] FROM table_name
  WHERE col_name = value1 or col_name = value2 or ...

-- --

それでは実際に試してみます。次のようなテーブルを作成しました。

create table friends (name varchar(10), address varchar(10));

IN演算子の使い方(1)

テーブルには次のようなデータを追加しておきます。

insert into friends values ('Yamada', 'Tokyo');
insert into friends values ('Suzuki', 'Nagoya');
insert into friends values ('Mori', 'Osaka');
insert into friends values ('Kudou', 'Chiba');
insert into friends values ('Sasaki', 'Fukuoka');

IN演算子の使い方(2)

最初に WHERE 句を指定せずにデータを取得します。この場合すべてのデータを取得します。

select * from friends;

IN演算子の使い方(3)

それでは WHERE 句と IN 演算子を使って条件を設定します。 address カラムの値が 'Tokyo'、 'Chiba', 'Saitama' のデータを取得します。

select * from friends where address in ('Tokyo', 'Chiba', 'Saitama');

IN演算子の使い方(4)

今度は逆に address カラムの値が 'Tokyo'、 'Chiba', 'Saitama' のいずれとも異なるデータを取得します。

select * from friends where address not in ('Tokyo', 'Chiba', 'Saitama');

IN演算子の使い方(5)

-- --

IN 演算子を使ってカラムの値を指定した値のリストと比較する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。