指定した値のリストと比較する(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));
テーブルには次のようなデータを追加しておきます。
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');
最初に WHERE 句を指定せずにデータを取得します。この場合すべてのデータを取得します。
select * from friends;
それでは WHERE 句と IN 演算子を使って条件を設定します。 address カラムの値が 'Tokyo'、 'Chiba', 'Saitama' のデータを取得します。
select * from friends where address in ('Tokyo', 'Chiba', 'Saitama');
今度は逆に address カラムの値が 'Tokyo'、 'Chiba', 'Saitama' のいずれとも異なるデータを取得します。
select * from friends where address not in ('Tokyo', 'Chiba', 'Saitama');
-- --
IN 演算子を使ってカラムの値を指定した値のリストと比較する方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。